포인터 선언
"포인터 선언" 포인터 변수의 이름을 지정 하 고 변수 가리키는 개체의 형식입니다.선언 된 메모리 주소에 대 한 포인터를 보유 하는 변수입니다.
구문
declarator:
pointer수신 동의직접 선언 자직접 자가:
identifier( declarator )
직접 자가 상수 식선택
직접 자가 ( 매개 변수 유형 목록 )
직접 자가 ( 식별자 목록선택**)**
pointer:
*****형식 한정자 목록선택*****형식 한정자 목록선택pointer
형식 한정자 목록:
형식 한정자형식 한정자 목록 유형 한정자
형식 지정자 는 모든 기본 개체, 구조체, 공용 구조체 형식 유형을 제공 합니다.포인터 변수 함수, 배열 및 다른 포인터를 가리킬 수도 있습니다.(참조를 선언 하 고 더 복잡 한 포인터 형식을 해석 하는 방법에 대 한 를 해석 하는 더 복잡 한 선언 자입니다.)
것은 형식 지정자void의 포인터가 참조 하는 형식 지정을 지연 시킬 수 있습니다. 이러한 항목으로 참조 되는 "포인터를 void"로 기록 되 고 void *.변수 선언에 대 한 포인터 void 에 있는 모든 형식의 개체를 사용할 수 있습니다.그러나 포인터가 가리키는 개체 또는 대부분의 작업을 수행 하려면 가리키는 형식의 명시적으로 각 작업에 대해 지정 되어야 합니다.(형식의 변수 char * 및 형식 void * 형식 캐스팅을 하지 않고 할당 호환 됩니다.) 형식 캐스팅을 이러한 변환을 수행할 수 있습니다 (참조 하십시오 형식 캐스트 변환 에 대 한 더 많은 정보).
형식 한정자 수 있습니다 const 또는 volatile, 또는 둘 다.이 각각 포인터 프로그램에서 수정할 수 없도록 지정 (const), 또는 마우스 포인터 제어할 프로그램의 일부 프로세스에 의해 적법 하 게 수정할 수 있는 (volatile).(참조 하십시오 형식 한정자 에 대 한 자세한 내용은 const 및 volatile입니다.)
declarator 이름 변수 및 수 유형 한정자를 포함 합니다.예를 들어, 경우 declarator 배열에 대 한 포인터에 배열, 포인터의 형식 나타냅니다 수정 되었습니다.
구조체, 공용 구조체 또는 열거 형식을 정의 하려면 먼저 구조체, 공용 구조체 또는 열거형 형식에 대 한 포인터를 선언할 수 있습니다.아래 예제와 같이 구조체 또는 공용 구조체 태그를 사용 하 여 포인터를 선언 합니다.컴파일러가 구조체 또는 공용 구조체 포인터 변수에 대 한 공간을 할당 하는 크기를 알고 있어야 하므로 그러한 선언은 허용 됩니다.
예제
다음 예제에서는 포인터 선언을 보여 줍니다.
char *message; /* Declares a pointer variable named message */
message 포인터가 가리키는 변수 char 형식입니다.
int *pointers[10]; /* Declares an array of pointers */
pointers 배열 된 10 개의 요소가 있습니다. 각 요소에 대 한 포인터를 사용 하 여 변수입니다 int 형식입니다.
int (*pointer)[10]; /* Declares a pointer to an array of 10 elements */
10 개의 요소가 있는 배열의 포인터 변수를 가리킵니다.이 배열의 각 요소에 있는 int 형식입니다.
int const *x; /* Declares a pointer variable, x,
to a constant value */
포인터 x 다를 가리키도록 수정할 수 있습니다 int 값을 있지만 값에 그 점을 수정할 수 없습니다.
const int some_object = 5 ;
int other_object = 37;
int *const y = &fixed_object;
int volatile *const z = &some_object;
int *const volatile w = &some_object;
변수 y 이 선언에 대 한 상수 포인터 선언 됩니다 있는 int 값입니다.가리키는 값을 수정할 수 있습니다, 있지만 포인터 자체는 항상 동일한 위치를 가리켜야 합니다: 주소를 fixed_object.마찬가지로, z 상수 포인터입니다 하지만 가리키도록 선언 된 것은 int 프로그램에서 해당 값을 수정할 수 없습니다.추가 지정 자가 volatile 나타냅니다 있지만 값의 const int 가 가리키는 z 수정할 수 없습니다 프로그램에서 합법적으로 프로그램 동시에 실행 되는 프로세스에서 수정할 수 있습니다.수는 w 프로그램을 가리키는 값을 변경할 수 없습니다 및 프로그램 포인터를 수정할 수 없음을 지정 합니다.
struct list *next, *previous; /* Uses the tag for list */
이 예제에서는 두 개의 포인터 변수를 선언 next 및 previous, 구조 형식으로를 차례로 list.이 선언을 정의를 하기 전에 나타날 수는 list 구조 입력 (다음 예 참조)으로 list 형식 정의 선언과 동일 하 게 표시 했습니다.
struct list
{
char *token;
int count;
struct list *next;
} line;
변수 line 라는 구조체 형식이 있습니다 list.list 구조 형식에 세 명의 구성원: 첫 번째 멤버에 대 한 포인터입니다를 char 두 번째 값이 있는 int 값 및 세 번째 것에 대 한 포인터에서 다른 list 구조.
struct id
{
unsigned int id_no;
struct name *pname;
} record;
변수 record 구조 형식에 id.참고 pname 라는 다른 구조체 형식에 대 한 포인터 선언 되었습니다 name.이 선언 앞에 수는 name 형식이 정의 되어 있습니다.