Typedef 사용법에는 다음이 포함됩니다. 1. Typedef 기본 데이터 유형은 "별칭"을 사용하며 C 언어의 모든 데이터 유형은 typedef를 사용하여 유형 이름을 재정의할 수 있습니다. 2. Typedef는 사용자 정의 데이터 유형에 대해 "별칭"을 사용하며 사용자 정의 데이터 유형에는 다음이 포함됩니다. 구조 구조체 이름{ };, 공용체 단위 이름 { };, 열거형 열거형 { }; 3. Typedef는 배열에 대해 "별칭"을 사용합니다. 4. Typedef는 포인터에 대해 "별칭"을 사용합니다.
이 기사의 운영 환경: Windows 10 시스템, C++ 20 버전, dell g3 컴퓨터.
실제 응용 프로그램에서 typedef는 주로 다음 네 가지 용도로 사용됩니다.
즉, C 언어의 모든 데이터 유형은 다음과 같습니다. typedef 키워드를 사용하여 유형 이름을 재정의하세요
1 |
|
사용자 정의 데이터 유형에는 다음이 포함됩니다: 구조체 구조체 이름{ } , 공용체 단위 이름 { } ;, 열거형 열거형 { }
1 2 3 4 |
|
구조의 데이터 이름을 재정의하는 데 일반적으로 사용되는 방법은 다음과 같습니다.
1 2 3 4 |
|
또한 typedef를 사용하여 정의할 수도 있습니다.
1 2 3 4 |
|
1 |
|
1 |
|
는 다음과 같습니다.
1 |
|
a의 데이터 유형이 char인 경우, 즉 char a =2이면
1 |
|
1 |
|
사실 위 프로그램은 두 단계를 수행합니다.
첫 번째 단계: 포인터에 "별칭" 지정
1 |
|
두 번째 단계: 강제 유형 변환
1 |
|
세 번째 단계: 포인터에 값 할당 포인터
1 |
|
요약: typedef를 사용할 때 typedef는 새로운 유형을 생성하지 않고 프로그램에서 사용할 기존 유형에 대한 "별칭"을 제공할 뿐입니다.
다음 코드와 같이 간단한 typedef 사용 예를 살펴보겠습니다.
1 |
|
위 코드에서 "const PCHAR"는 "const char*"와 동일합니까?
답은 '아니오'입니다. Typedef는 유형의 새로운 별칭을 정의하는 데 사용되며 단순한 문자열 대체가 아닙니다. 따라서 "const PCHAR"의 const는 전체 포인터 자체에 불변성을 부여하여 상수 포인터 "char* const(char를 가리키는 상수 포인터)"를 형성합니다. 즉, 실제로는 "const char*(상수 char에 대한 포인터)"가 아니라 "char* const"와 동일합니다. 물론, 다음 코드에서 볼 수 있듯이 const PCHAR을 const char*와 동일하게 만드는 것도 쉽습니다.
1 |
|
실제로 포인터에 대한 typedef를 선언할 때마다 최종 typedef 이름에 const를 추가해야 합니다. 그래서 포인터 자체는 일정합니다.
typedef가 객체의 저장 특성에 실제로 영향을 미치지는 않지만 auto, extern, static 및 Register와 같은 키워드와 마찬가지로 여전히 구문상의 저장 클래스 키워드라는 점에 유의하는 것도 중요합니다. 따라서 다음과 같은 선언 방법은 적합하지 않습니다.
1 |
|
불가능한 이유는 여러 개의 저장소 클래스 키워드를 선언할 수 없기 때문입니다. typedef가 이미 저장소 클래스 키워드의 위치를 차지하고 있으므로 선언할 필요가 없습니다. typedef 선언에서는 더 이상 static 또는 기타 스토리지 클래스 키워드를 사용할 수 없습니다. 물론 컴파일러는 오류도 보고합니다. 예를 들어 VC++2010의 오류 메시지는 "여러 저장소 클래스를 지정할 수 없습니다."입니다.
(1) typedef에 의해 생성된 기호 이름은 유형으로만 제한되며 값은 해당되지 않습니다.
(2) typedef는 컴파일러에 의해 해석되며 해석되지 않습니다. 전처리기
실제 응용 프로그램에서 typedef는 주로 다음 네 가지 용도로 사용됩니다.
즉, 모든 데이터 유형은 C 언어를 사용할 수 있습니다. typedef 키워드를 사용하여 유형 이름을 재정의하세요
1 |
|
사용자 정의 데이터 유형에는 다음이 포함됩니다: 구조 구조체 이름{ }, 공용체 단위 이름 { }; 열거형 enum { };
1 2 3 4 |
|
구조의 데이터 이름을 재정의하는 데 일반적으로 사용되는 방법은 다음과 같습니다.
1 2 3 4 |
|
또한 typedef를 사용하여 다음을 정의할 수도 있습니다.
1 2 3 4 |
|
1 |
|
1 |
|
는 다음과 동일합니다.
1 |
|
a의 데이터 유형이 char인 경우, 즉 char a =2 ; 그런 다음
1 |
|
1 |
|
사실 위 프로그램은 두 단계를 수행합니다.
1단계: 포인터에 "별칭" 지정
1 |
|
2단계: 유형 변환 강제
1 |
|
3단계: 할당 포인터에 대한 값
1 |
|
요약: typedef를 사용할 때 typedef는 새로운 유형을 생성하지 않고 프로그램에서 사용할 기존 유형에 대한 "별칭"을 제공할 뿐입니다.
다음 코드와 같이 간단한 typedef 사용 예를 살펴보겠습니다.
1 |
|
위 코드에서 "const PCHAR"는 "const char*"와 동일합니까?
답은 '아니오'입니다. Typedef는 유형의 새로운 별칭을 정의하는 데 사용되며 단순한 문자열 대체가 아닙니다. 따라서 "const PCHAR"의 const는 전체 포인터 자체에 불변성을 부여하여 상수 포인터 "char* const(char를 가리키는 상수 포인터)"를 형성합니다. 즉, 실제로는 "const char*(상수 char에 대한 포인터)"가 아니라 "char* const"와 동일합니다. 물론, 다음 코드에서 볼 수 있듯이 const PCHAR을 const char*와 동일하게 만드는 것도 쉽습니다.
1 |
|
실제로 포인터에 대한 typedef를 선언할 때마다 최종 typedef 이름에 const를 추가해야 합니다. 그래서 포인터 자체는 일정합니다.
typedef가 객체의 저장 특성에 실제로 영향을 미치지는 않지만 auto, extern, static 및 Register와 같은 키워드와 마찬가지로 여전히 구문상의 저장 클래스 키워드라는 점에 유의하는 것도 중요합니다. 따라서 다음과 같은 선언 방법은 적합하지 않습니다.
1 |
|
불가능한 이유는 여러 개의 저장소 클래스 키워드를 선언할 수 없기 때문입니다. typedef가 이미 저장소 클래스 키워드의 위치를 차지하고 있으므로 선언할 필요가 없습니다. typedef 선언에서는 더 이상 static 또는 기타 스토리지 클래스 키워드를 사용할 수 없습니다. 물론 컴파일러는 오류도 보고합니다. 예를 들어 VC++2010의 오류 메시지는 "여러 저장소 클래스를 지정할 수 없습니다."입니다.
위 내용은 typedef의 사용법은 무엇입니까의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!