C 데이터형

C data types

C 프로그래밍 언어에서 데이터 유형은 데이터 요소의 저장 의미 및 특성을 구성합니다.메모리 위치 또는 변수대한 선언 형식으로 언어 구문에서 표현됩니다.데이터 유형은 또한 데이터 요소의 처리 방법이나 작업 유형도 결정합니다.

C 언어는 정수 및 실수 유형과 같은 기본 산술 유형과 배열 및 복합 유형을 구축하기 위한 구문을 제공합니다.C 표준 라이브러리의 헤더에는 특정 하드웨어 플랫폼에서의 [1][2]언어 구현과는 무관하게 정확한 크기의 스토리지를 제공하는 등 추가 속성을 가진 지원 유형의 정의가 포함됩니다.

기본형

주요 유형

C 언어에는 char, int, float double의 4가지 기본 산술 유형 지정자와 부호 없음, 짧은 수식자있습니다.다음 표에는 스토리지 크기별 선언의 대규모 집합을 지정할 때 허용되는 조합이 나와 있습니다.

유형 설명. 최소 크기(비트) 형식 지정자 범위 소수 상수의 접미사
char 기본 문자 집합을 포함할 수 있는 기계의 최소 주소 지정 단위입니다.정수형입니다.실제 유형은 서명된 형식 또는 서명되지 않은 형식 중 하나입니다.CHAR_B가 포함되어 있습니다.IT [3]비트가 있습니다. 8 %c CHAR_MIN/CHAR_MAX 없음
signed char char와 같은 크기이지만 서명된 것은 확실합니다.적어도 [-127, +127][3][a] 범위를 포함할 수 있습니다. 8 %c (또는%hhi수치 출력의 경우) SCHAR_MIN/SCHAR_MAX[5] 없음
unsigned char char와 같은 크기이지만 부호는 없습니다.적어도 [0, 255] [6]범위를 포함합니다. 8 %c (또는%hhu수치 출력의 경우) 0 /UCHAR_MAX 없음
short
short int
signed short
signed short int
짧은 부호 정수 형식입니다.적어도 [-32,767, +32,767][3][a] 범위를 포함할 수 있습니다. 16 %hi또는%hd SHRT_MIN/SHRT_MAX 없음
unsigned short
unsigned short int
부호 없는 짧은 정수 형식입니다.[[3]0, 65,535] 이상의 범위를 포함합니다. 16 %hu 0 /USHRT_MAX 없음
int
signed
signed int
기본 부호 정수 유형입니다.적어도 [-32,767, +32,767][3][a] 범위를 포함할 수 있습니다. 16 %i또는%d INT_MIN/INT_MAX 없음[7]
unsigned
unsigned int
기본 부호 없는 정수 형식입니다.[[3]0, 65,535] 이상의 범위를 포함합니다. 16 %u 0 /UINT_MAX u또는U[7]
long
long int
signed long
signed long int
부호 정수 형식입니다.적어도 [-2,147,483,647,+2,147,483,647][3][a] 범위를 포함할 수 있습니다. 32 %li또는%ld LONG_MIN/LONG_MAX l또는L[7]
unsigned long
unsigned long int
부호 없는 긴 정수 형식입니다.적어도 [0, 4,294,967,295][3]범위를 포함할 수 있습니다. 32 %lu 0 /ULONG_MAX 둘다요.u또는U그리고.l또는L[7]
long long
long long int
signed long long
signed long long int
부호 정수 형식입니다.적어도 [-9,223,372,036,854,775,807,+9,223,372,036,854,775,807][3][a] 범위를 포함할 수 있습니다.표준의 C99 버전 이후 지정됩니다. 64 %lli또는%lld LLONG_MIN/LLONG_MAX ll또는LL[7]
unsigned long long
unsigned long long int
부호 없는 정수 형식입니다.적어도 [0, 18,446,744,073,709,551,615][3] 범위를 포함합니다.표준의 C99 버전 이후 지정됩니다. 64 %llu 0 /ULLONG_MAX 둘다요.u또는U그리고.ll또는LL[7]
float 실제 부동소수점 타입.보통 단정도 부동소수점 타입이라고 불립니다.지정되지 않은 실제 속성(최소 제한 제외). 단, 대부분의 시스템에서는 IEEE 754 단정도 바이너리 부동소수점 형식(32비트)입니다.이 형식은 옵션 부록 F "IEC 60559 부동 소수점 산술"에서 필요합니다. 텍스트에서 [b]변환:
  • %f %F
  • %g %G
  • %e %E
  • %a %A
f또는F
double 실제 부동소수점 유형.보통 배정도 부동소수점 유형이라고 불립니다.지정되지 않은 실제 속성(최소 제한 제외). 단, 대부분의 시스템에서는 IEEE 754 정밀도의 바이너리 부동 소수점 형식(64비트)입니다.이 형식은 옵션 부록 F "IEC 60559 부동 소수점 산술"에서 필요합니다.
  • %lf %lF
  • %lg %lG
  • %le %lE
  • %la %lA[c]
long double 실제 부동소수점 유형.일반적으로 확장 정밀도 부동소수점 숫자 형식으로 매핑됩니다.실제 속성이 지정되지 않았습니다.x86 확장 정밀도 부동소수점 형식(80비트, 그러나 일반적으로 패딩 바이트가 있는 메모리에서는 96비트 또는 128비트), 비 IEEE "더블 더블"(128비트), IEEE 754 4배 정밀도 부동소수점 형식(128비트) 중 하나 또는 두 배와 같은 형식입니다.상세한 것에 대하여는, 긴 더블의 기사를 참조해 주세요. %Lf %LF
%Lg %LG
%Le %LE
%La %LA[c]
l또는L
  1. ^ a b c d e 최소 범위 -(2-1n−1) ~ 2-1n−1(예: [-127,127])은 표준에서 허용하는 다양한 정수 표현(보, 부호 크기, 2보)[4]에서 나온다.단, 대부분의 플랫폼에서는 2개의 보어를 사용합니다.이는 이러한 구현에 대해 mµn포함-2m−1 ~ 2-1m−1 형식의 범위를 의미합니다.예를 들어 [-128,127] (SCHAR_MIN= -128 및SCHAR_MAX= 127) 8비트 부호 문자일 경우.
  2. ^ 이러한 형식 문자열은 텍스트 형식에도 존재하지만 이중으로 작동합니다.
  3. ^ a b 대문자와 소문자가 출력에서 다릅니다.대문자 지정자는 대문자로, 소문자는 소문자로 표시됩니다(%A, %E, %F, %G는 INF, NAN 및 E(exponent)와 같은 값을 대문자로 생성합니다).

정수 유형의 실제 크기는 구현에 따라 다릅니다.표준에서는 데이터 유형과 각 데이터 유형의 최소 크기 사이의 크기 관계만 요구합니다.

관련 요건은 다음과 같습니다.long long보다 작지 않다long, 이것은 보다 작지 않다.int, 이것은 보다 작지 않다.short.~하듯이char의 사이즈는 항상 지원되는 최소 데이터 유형입니다.다른 데이터 유형(비트 필드 제외)은 작을 수 없습니다.

최소 크기char8비트(최소 사이즈)short그리고.int16비트,long32비트이고long long에는 최소 64비트가 포함되어야 합니다.

종류int타겟 프로세서가 가장 효율적으로 동작하는 정수 타입이어야 합니다.예를 들어 모든 유형이 64비트일 수 있습니다.그러나 몇 가지 다른 정수 폭 구성표(데이터 모델)가 사용됩니다.데이터 모델은 서로 다른 프로그램이 통신하는 방법을 정의하기 때문에 주어진 운영 체제 애플리케이션 인터페이스 내에서 [8]통일된 데이터 모델이 사용됩니다.

실제로,char보통 8비트의 사이즈와short의 사이즈는 보통 16비트입니다(부호 없는 것과 같음).이는 1990년대 SunOS 4 Unix, Microsoft MS-DOS, 최신 Linux 및 내장형 8비트 PIC 마이크로 컨트롤러용 마이크로칩 MCC18과 같은 다양한 플랫폼에 적용됩니다.POSIX에 필요한 것은char크기가 정확히 [9][10]8비트여야 합니다.

C표준에 다양한 규칙 회사.unsigned char기본 형식 배열 임의의non-bit-field 개체를 저장하는 데 적합한:패딩 비트와 트랩, 개체 representation,[6]의 정의와 컴퓨터 그래픽의 가능성의 부족이다.[11]

부동소수점 유형의 실제 크기와 동작은 구현에 따라 다릅니다.유일한 요구는 이다.long double보다 작지 않다double, 이것은 보다 작지 않다.float보통 32비트 및 64비트 IEEE 754 바이너리 부동소수점 형식은float그리고.double각각 다음과 같다.

C99 규격에는 새로운 실제 부동소수점 유형이 포함되어 있습니다.float_t그리고.double_t, 로 정의되어 있습니다.<math.h>다음 경우 부동소수점 표현의 중간 결과에 사용되는 유형에 해당합니다.FLT_EVAL_METHOD0, 1, 또는 2 입니다.이러한 유형은 다음보다 넓을 수 있습니다.long double.

C99는 다음과 같은 복잡한 유형도 추가하였다.float _Complex,double _Complex,long double _Complex.

부울형

C99에 부울(true/false) 유형이 추가되었습니다._Bool. 또한,<stdbool.h>header 정의bool이 타입의 편리한 에일리어스로서도, 매크로를 제공합니다.true그리고.false._Bool일반 정수 유형과 동일하게 기능하지만, 한 가지 예외: 에 대한 할당_Bool0(false)이 아닌 값은 1(true)로 저장됩니다.이 동작은 암묵적인 압축 변환에서 정수 오버플로를 방지하기 위해 존재합니다.예를 들어, 다음과 같은 코드입니다.

서명되어 있지 않다  b = 256;  한다면 (b) {  /* 어떻게 좀 해봐 */ } 

변수b이 경우 false로 평가됩니다.unsigned char의 사이즈는 8비트입니다.이는 값 256이 데이터 유형에 맞지 않기 때문에 하위 8비트가 사용되고 값이 0이 되기 때문입니다.그러나 유형을 변경하면 이전 코드가 정상적으로 동작합니다.

부울 b = 256;  한다면 (b) {  /* 어떻게 좀 해봐 */ } 

_Bool 유형은 또한 참 값을 항상 서로 비교합니다.

부울 a = 1, b = 2;  한다면 (a == b) {  /* 이 코드는 */ 실행됩니다. } 

크기 및 포인터 차이 유형

C 언어 사양에는 typedef가 포함되어 있습니다.size_t그리고.ptrdiff_t메모리 관련 양을 나타냅니다.사이즈는, 사용 가능한 주소 공간등의 메모리 용량이 아니고, 타겟 프로세서의 산술 기능에 의해서 정의됩니다.이들 유형은 모두 에서 정의되어 있습니다.<stddef.h>헤더 (cstddefC++)로 설정합니다.

size_t는, 특정의 실장내의 임의의 오브젝트(배열을 포함한다)의 사이즈를 나타내기 위해서 사용되는 부호 없는 정수 타입입니다.연산자 크기는 유형의 값을 산출합니다.size_t. 의 최대 크기size_t를 통해 제공됩니다.SIZE_MAX에 정의되어 있는 매크로 상수<stdint.h>헤더 (cstdint헤더(C++)를 지정합니다. size_t최소 16비트 폭을 보장합니다.또한 POSIX에는 다음이 포함됩니다.ssize_t이것은 와 같은 너비의 부호 있는 정수형입니다.size_t.

ptrdiff_t는 포인터 간의 차이를 나타내기 위해 사용되는 부호 있는 정수형입니다.이것은 같은 타입의 포인터에 대해서만 유효함을 보증합니다.다른 타입으로 구성된 포인터의 감산은 구현 정의됩니다.

기본 유형의 속성에 대한 인터페이스

기본 산술 유형의 크기와 같은 실제 속성에 대한 정보는 두 개의 헤더에 있는 매크로 상수를 통해 제공됩니다.<limits.h>헤더 (climitsC++)의 header는 정수형 매크로를 정의하고 있습니다.<float.h>헤더 (cfloatheader in C++)는 부동소수점 유형의 매크로를 정의합니다.실제 값은 구현에 따라 달라집니다.

정수형 속성

  • CHAR_BIT– 비트 단위의 문자 유형 크기(8비트 이상)
  • SCHAR_MIN,SHRT_MIN,INT_MIN,LONG_MIN,LLONG_MIN(C99) – 부호 있는 정수 유형의 최소 가능한 값: 부호 있는 문자, 부호 있는 쇼트, 부호 있는 int, 부호 있는 롱, 부호 있는 롱
  • SCHAR_MAX,SHRT_MAX,INT_MAX,LONG_MAX,LLONG_MAX(C99) – 부호 있는 정수 타입의 가능한 최대값: 부호 있는 문자, 부호 있는 쇼트, 부호 있는 int, 부호 있는 롱, 부호 있는 롱
  • UCHAR_MAX,USHRT_MAX,UINT_MAX,ULONG_MAX,ULLONG_MAX(C99) – 부호 없는 정수 유형의 가능한 최대값: 부호 없는 문자, 부호 없는 쇼트, 부호 없는 int, 부호 없는 롱, 부호 없는 롱
  • CHAR_MIN– 가능한 최소 문자 값
  • CHAR_MAX– 문자 최대값
  • MB_LEN_MAX– 멀티바이트 문자의 최대 바이트 수

부동 소수점 유형의 속성

  • FLT_MIN,DBL_MIN,LDBL_MIN– 플로트의 최소 정규화 양의 값, 2배, 긴 2배
  • FLT_TRUE_MIN,DBL_TRUE_MIN,LDBL_TRUE_MIN(C11) – 플로트의 최소 양수 값, 각각 이중, 긴 이중
  • FLT_MAX,DBL_MAX,LDBL_MAX– 플로트의 최대 유한값, 각각 더블, 롱 더블
  • FLT_ROUNDS– 부동소수점 연산을 위한 반올림 모드
  • FLT_EVAL_METHOD(C99) – 다른 부동 소수점 유형을 포함하는 표현의 평가 방법
  • FLT_RADIX– 부동소수점 유형의 지수 기수
  • FLT_DIG,DBL_DIG,LDBL_DIG– 부동으로 정밀도를 잃지 않고 표시할 수 있는 소수 자릿수, 두 배, 긴 배
  • FLT_EPSILON,DBL_EPSILON,LDBL_EPSILON 1.0과 다음으로 나타낼 수 있는 부동값의 차이(각각 2배, 긴 2배)
  • FLT_MANT_DIG,DBL_MANT_DIG,LDBL_MANT_DIG– 수FLT_RADIX부동소수점 유효 및 부동소수점 부동의 경우 각각 2배, 긴 2배
  • FLT_MIN_EXP,DBL_MIN_EXP,LDBL_MIN_EXP– 다음과 같은 최소 음의 정수FLT_RADIX그 수보다 한 수 적은 곱은 정규화된 플로트, 각각 더블, 롱 더블이다.
  • FLT_MIN_10_EXP,DBL_MIN_10_EXP,LDBL_MIN_10_EXP– 그 곱으로 상승한 10이 정규화된 플로트(double, long double)가 되도록 최소 음의 정수
  • FLT_MAX_EXP,DBL_MAX_EXP,LDBL_MAX_EXP– 다음과 같은 최대 양의 정수FLT_RADIX그 수보다 한 수 적은 곱은 정규화된 플로트, 각각 더블, 롱 더블이다.
  • FLT_MAX_10_EXP,DBL_MAX_10_EXP,LDBL_MAX_10_EXP– 그 곱으로 상승한 10이 정규화된 플로트(double, long double)가 되는 최대 양의 정수
  • DECIMAL_DIG(C99) – 지원되는 가장 넓은 부동 소수점 타입의 임의의 숫자를 다음의 정밀도로 10진수로 나타낼 수 있는 최소 소수점 수DECIMAL_DIG값을 변경하지 않고 원래 부동소수점 유형으로 읽습니다. DECIMAL_DIG최소 10입니다.

고정폭 정수형

C99 규격에는 프로그램의 [2]이식성을 높이기 위해 몇 가지 새로운 정수 유형의 정의가 포함되어 있습니다.이미 사용 가능한 기본 정수 유형은 실제 크기가 구현 정의되어 시스템에 따라 다를 수 있기 때문에 불충분하다고 판단되었습니다.이 새로운 유형은 하드웨어가 일반적으로 여러 유형만 지원하며 환경마다 지원이 다른 임베디드 환경에서 특히 유용합니다.모든 새로운 유형은 에서 정의됩니다.<inttypes.h>헤더 (cinttypes헤더(C++)는, 다음의 URL 로도 입수할 수 있습니다.<stdint.h>헤더 (cstdint헤더(C++)를 지정합니다.유형은 다음 범주로 그룹화할 수 있습니다.

  • 모든 구현에서 동일한 수의 n비트를 갖는 것이 보증되는 정확한 폭의 정수형.구현에서 사용할 수 있는 경우에만 포함됩니다.
  • 구현에서 사용 가능한 최소 유형으로 보증되는 최소 너비 정수 유형. n비트 이상의 수가 지정됩니다.적어도 N=8,16,32,64에 대해 지정해야 합니다.
  • 구현에서 사용 가능한 정수 유형 중 최소 n비트 수를 가진 가장 빠른 정수 유형임을 보증하는 가장 빠른 정수 유형.적어도 N=8,16,32,64에 대해 지정해야 합니다.
  • 포인터를 유지할 수 있는 것이 보증되는 포인터 정수형.구현에서 사용할 수 있는 경우에만 포함됩니다.
  • 구현에서 가장 큰 정수형이 보장되는 최대 폭 정수형.

다음 표에 구현 상세(n은 비트수를 나타냄)를 취득하기 위한 유형 및 인터페이스의 개요를 나타냅니다.

유형 카테고리 서명된 유형 서명되지 않은 유형
유형 최소값 최대값 유형 최소값 최대값
정확한 폭 intn_t INTn_MIN INTn_MAX uintn_t 0 UINTn_MAX
최소 폭 int_leastn_t INT_LEASTn_MIN INT_LEASTn_MAX uint_leastn_t 0 UINT_LEASTn_MAX
가장 빠른 int_fastn_t INT_FASTn_MIN INT_FASTn_MAX uint_fastn_t 0 UINT_FASTn_MAX
포인터 intptr_t INTPTR_MIN INTPTR_MAX uintptr_t 0 UINTPTR_MAX
최대 폭 intmax_t INTMAX_MIN INTMAX_MAX uintmax_t 0 UINTMAX_MAX

Printf 및 scanf 형식 지정자

<inttypes.h>헤더 (cinttypesC++)에서는, 에 정의되어 있는 타입의 기능을 확장하기 위한 기능을 제공합니다.<stdint.h>header를 클릭합니다.printf 형식 문자열 및 scanf 형식 문자열 지정자에 대한 매크로를 정의합니다.<stdint.h>및 를 사용하기 위한 몇 가지 기능intmax_t그리고.uintmax_t타입. 이 헤더는 C99에서 추가되었습니다.

Printf 형식 문자열

매크로는 다음 형식입니다.PRI{fmt}{type}여기서 {fmt}는 출력 포맷을 정의하며 다음 중 하나입니다.d(표준),x(소수),o(8진수),u(설계 완료) 및i( ( ( ) 。{type}은(는) 인수 유형을 정의하며 다음 중 하나입니다.n,FASTn,LEASTn,PTR,MAX,어디에n는 인수의 비트 수에 대응합니다.

Scanf 형식 문자열

매크로는 다음 형식입니다.SCN{fmt}{type}여기서 {fmt}는 출력 포맷을 정의하며 다음 중 하나입니다.d(표준),x(소수),o(8진수),u(설계 완료) 및i( ( ( ) 。{type}은(는) 인수 유형을 정의하며 다음 중 하나입니다.n,FASTn,LEASTn,PTR,MAX,어디에n는 인수의 비트 수에 대응합니다.

기능들

추가 부동 소수점 유형

고정폭 정수형과 마찬가지로 ISO/IEC TS 18661은 IEEE 754 교환용 부동소수점 유형과 확장 형식을 바이너리 및 10진수로 지정합니다.

  • _FloatN바이너리 인터체인지 포맷의 경우
  • _DecimalN10진수 교환 형식의 경우
  • _FloatNx바이너리 확장 포맷의 경우
  • _DecimalNx10진수 확장 포맷의 경우.

구조물들

구조는 잠재적으로 서로 다른 데이터 유형의 여러 데이터 항목의 스토리지를 단일 변수에 의해 참조되는 하나의 메모리 블록으로 집계합니다.다음 예제에서는 데이터 유형을 선언합니다.struct birthday이름과 생일이 적혀 있습니다.구조 정의 뒤에 변수 선언이 이어집니다.John필요한 스토리지를 할당합니다.

구조 생일 {   이름.[20];  인트 하루;  인트 ;  인트 연도; };  구조 생일 존.; 

구조의 메모리 레이아웃은 각 플랫폼의 언어 구현 문제이며 몇 가지 제한이 있습니다.첫 번째 멤버의 메모리 주소는 구조 자체의 주소와 같아야 합니다.구조를 초기화하거나 복합 리터럴을 사용하여 할당할 수 있습니다.런타임에는 효율적이지 않은 경우가 많지만 함수는 직접 구조물을 반환할 수 있습니다.C99 이후, 구조는 플렉시블 어레이 부재로 끝날 수도 있습니다.

자체 유형의 구조에 대한 포인터를 포함하는 구조는 링크된 데이터 구조를 구축하는 데 일반적으로 사용됩니다.

구조 노드 {  인트 ;  구조 노드 *다음 분.; }; 

어레이

모든 타입에 대해서Tvoid 및 기능 유형을 제외하고 "type of elements" 유형이 있습니다.배열은 메모리에 연속적으로 저장되는 모든 동일한 유형의 값 집합입니다.사이즈의 배열N로부터의 정수에 의해 색인화된다.0포함까지N−1다음은 간단한 예입니다.

인트 고양이[10];  // 10개의 요소로 구성된 배열(각 유형 int) 

복합 이니셜라이저를 사용하여 어레이를 초기화할 수 있지만 할당할 수는 없습니다.어레이는 첫 번째 요소에 포인터를 전달함으로써 기능에 전달됩니다.다차원 어레이는 "어레이 어레이 …"로 정의되며, 가장 바깥쪽 치수를 제외한 모든 어레이는 컴파일 시 일정한 크기를 가져야 합니다.

인트 a[10][8];  // 10개의 요소로 구성된 배열, 각각 '8개의 int 요소 배열' 유형 

포인터

모든 데이터 유형T에는 에 대응하는 타입 포인터가 있습니다.포인터는 특정 유형의 변수의 저장 위치 주소를 포함하는 데이터 유형입니다.아스타리스크( )로 선언됩니다.*기본 스토리지 유형 뒤에 변수 이름 앞에 declarator를 입력합니다.화이트 스페이스가 별표는 선택적이다 전에.

 *광장;  *원형; 인트 *타원형; 

Pointers 또한 포인터 데이터 형식에, 따라서 캐릭터**, int 그래요 같은 배열 형식으로 포인터를 포함하여 여러가지 간접 포인터, 만들기 선언될 수 있다.후자는 덜 포인터의 배열보다, 그리고 그들의 구문 혼동을 일으킬 수 있습니다. 흔하다.

 *PC[10];   // '문자 변환'의 10개 요소 배열  (*)[10]; // 10자리 문자 배열 포인터 

요소pc(일반 플랫폼에서는 보통 40바이트 또는 80바이트)에 대한 포인터 크기의 메모리 블록이 10개 필요합니다만,pa는 1개의 포인터(4바이트 또는8바이트)에 불과하며, 이 포인터가 참조하는 데이터는 10바이트의 배열(sizeof *pa == 10).

유니언

유니언 타입은 다른 타입의 설명을 사용하여 같은 메모리블록에 액세스 할 수 있도록 하는 특수한 구조입니다.예를 들어, 동일한 데이터를 정수, 부동 또는 기타 사용자가 선언한 유형으로 읽을 수 있도록 데이터 유형의 조합을 선언할 수 있습니다.

조합 {  인트 i;  흘러가다 f;  구조 {   서명되어 있지 않다 인트 u;   이중으로 하다 d;  } s; } u; 

총 크기u의 크기입니다.u.s– 이 합계는 공교롭게도 다음과 같은 크기의 합계가 됩니다.u.s.u그리고.u.s.d– 이후s둘 다보다 크다i그리고.f에 할당하는 경우u.i, 의 일부u.f보존할 수 있다u.i보다 작다u.f.

조합원으로부터의 판독은, 조합원의 값이 변환되는 것이 아니고, 단지 판독되는 것이기 때문에, 캐스팅과 같은 것이 아닙니다.

함수 포인터

함수 포인터를 사용하면 특정 시그니처로 함수를 참조할 수 있습니다.예를 들어, 표준 함수의 주소를 저장하는 방법abs변수로my_int_f:

인트 (*my_int_f)(인트) = &복근; // & 연산자는 생략할 수 있지만, 여기서 "abs" 주소가 사용됨을 명확히 합니다. 

함수 포인터는 일반 함수 호출과 마찬가지로 이름으로 호출됩니다.함수 포인터는 포인터 및 보이드 포인터와 별개입니다.

유형 한정자

전술한 타입은 타입 한정자에 의해 한층 더 특징지을 수 있으며, 수식 타입을 산출할 수 있다.2014년과 C11년 기준 C에는 네 가지 유형의 예선전이 있다.const(C89),volatile(C89),restrict(C99) 및_Atomic(C11) – 후자는 사용자 [12]이름과 경합을 피하기 위해 개인 이름을 사용하지만 더 일반적인 이름atomic사용할 수 있습니다.<stdatomic.h>header가 포함되어 있습니다.이 중에서const는 지금까지 가장 잘 알려져 있으며 가장 많이 사용되고 있으며 표준 라이브러리에 표시되며 항상 정확성을 충족해야 하는 C 언어의 중요한 사용에서 발견됩니다.다른 수식어는 저수준 프로그래밍에 사용되며, 일반 프로그래머에 [citation needed]의해 널리 사용되기는 하지만 거의 사용되지 않습니다.

「 」를 참조해 주세요.

레퍼런스

  1. ^ Barr, Michael (2 December 2007). "Portable Fixed-Width Integers in C". Retrieved 18 January 2016.
  2. ^ a b ISO/IEC 9899:1999 specification, TC3 (PDF). p. 255, § 7.18 Integer types <stdint.h>.
  3. ^ a b c d e f g h i j ISO/IEC 9899:1999 specification, TC3 (PDF). p. 22, § 5.2.4.2.1 Sizes of integer types <limits.h>.
  4. ^ Rationale for International Standard—Programming Languages—C Revision 5.10 (PDF). p. 25, § 5.2.4.2.1 Sizes of integer types <limits.h>.
  5. ^ "C and C++ Integer Limits".
  6. ^ a b ISO/IEC 9899:1999 specification, TC3 (PDF). p. 37, § 6.2.6.1 Representations of types – General.
  7. ^ a b c d e f ISO/IEC 9899:1999 specification, TC3 (PDF). p. 56, § 6.4.4.1 Integer constants.
  8. ^ "64-Bit Programming Models: Why LP64?". The Open Group. Retrieved 9 November 2011.
  9. ^ "Width of Type (The GNU C Library)". www.gnu.org. Retrieved 30 July 2022.
  10. ^ "<limits.h>". pubs.opengroup.org. Retrieved 30 July 2022.
  11. ^ ISO/IEC 9899:1999 specification, TC3 (PDF). p. 67, § 6.5 Expressions.
  12. ^ C11: The New C Standard, Thomas Plum