포인터 선언

"포인터 선언" 포인터 변수의 이름을 지정 하 고 변수 가리키는 개체의 형식입니다.선언 된 메모리 주소에 대 한 포인터를 보유 하는 변수입니다.

구문

  • 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 형식이 정의 되어 있습니다.

참고 항목

개념

변수를 선언 하 고 선언 자