다음을 통해 공유


선언 자 개요

선언 자 객체 또는 함수 이름을 지정 하는 구성 요소 선언입니다.선언 자 또한 명명 된 개체를 개체, 포인터, 참조 또는 배열 인지 여부를 지정 합니다.선언 자 기본 형식을 지정 하지 있지만 파생된 형식으로 포인터, 참조 및 배열을 지정 하는 기본 형식에서 형식 정보를 수정 하지.함수에 적용 된 개체, 포인터 또는 참조 하는 함수의 반환 형식을 완전 하 게 지정 하려면 형식 지정자로 선언 자를 사용할 수 있습니다.(지정자에서 설명한 선언, 형식 및 저장소 클래스와 같은 속성을 전달 합니다.이 섹션에서 대해 한정자, Microsoft 전용 한정자, 선언 자 수정 됩니다.) 다음 그림의 전체 선언을 보여 줍니다. MyFunction, 선언의 구성 요소를 호출 합니다.

지정자, 한정자 및 선언 자

지정자 한정자 선언자

Microsoft 전용

파생 형식이 대부분의 Microsoft 확장된 키워드 형식 한정자로 사용할 수 있습니다. 선언 자 또는 지정 자가 아닙니다.(참조 하십시오 Microsoft 전용 한정자입니다.)

Microsoft 특정 끝

선언 자 선언 구문에서 선택적 지정자 목록 후 표시 됩니다.이 지정자에 대 한 참조 선언 합니다. 선언이 두 개 이상의 한 자가 포함 될 수 있습니다 있지만 각 선언 자 하나의 이름을 선언 합니다.

다음의 예제 선언 지정자와 선언 자 전체 선언을 만드는 데 결합 하는 방법을 보여 줍니다.

const char *pch, ch;

앞의 선언에서 키워드를 const 및 char 지정자의 목록을 구성 하 합니다.두 가지 선언 자 나열 된: *pch 및 ch.여러 엔터티를 선언 하는 선언을 쉼표로 구분 된 목록을 세미콜론으로 종료 선언 자, 그 뒤에 형식 지정자로 구성 됩니다.

단순 개체에 대 한 선언 자

단순 개체 이중 또는 int로 선언 자를 단순히 그 이름에 괄호 안에 선택적입니다.

int i; // declarator is i

int (i); // declarator is (i)

포인터, 참조 및 배열을 선언 자

이름 앞에 삽입 포인터 연산자 개체 참조 또는 포인터가 발생 합니다.* 연산자 선언 이름에 대 한 포인터입니다. 연산자를 선언 그를 참조 합니다.

int *i; // declarator is *i
int &i; // declarator is &i
int **i; // declarator is **i;

추가 const 또는 volatile 포인터가 이러한 특수 한 속성을 제공 합니다.이 지정자를 선언 자에 사용 하는 (형식 지정자에 다름)를 가리키는 개체가 아닌 포인터가의 속성을 수정 합니다.

char *const cpc; // const pointer to char 
const char *pcc; // pointer to const char 
const char *const cpcc; // const pointer to const char

추가 정보를 찾을 수 있습니다 const 및 volatile 포인터.

클래스 또는 구조체의 멤버에 대 한 포인터 적절 한 중첩된 이름 지정자로 선언 됩니다.

int X::* pIntMember; 
int ::X::* pIntMember; // the initial :: specifies X is in global scope
char Outer::Inner::* pIntMember; // pointer to char in a nested class

선택적 상수 식 후 이름 둘러싸는 괄호 배열 개체를 발생할.계속 괄호 추가 차원 배열을 선언합니다.

int i[5]; // array with five elements of type int numbered from 0 to 4
int i[]; // array of unknown size
char *s[4]; // array of pointers to char
int i[2][2]; // two dimensional array

함수 선언 자

괄호 안에 인수 목록이 들어 있는 이름 뒤 함수를 선언 하는 데 사용 됩니다.다음의 반환 형식은 함수 선언 int 및 인수를 세 종류의 int.

int f(int a, int b, int c);

인수 목록에 대 한 자세한 내용은 함수 선언.

포인터 또는 참조 연산자를 아래와 같이 함수 이름 앞에 포인터를 함수에 대 한 참조를 선언 합니다.괄호 안에 일반적으로 선택적에 대 한 포인터를 함수에 포인터를 반환 하는 함수를 구별 해야 합니다.

int (*pf)(int); // pointer to function returning int
int *f(int i); // function returning pointer to int
int (&pf)(int); // reference to function 

멤버 함수에 대 한 포인터는 중첩 된 이름 지정자에서 구별 됩니다.

int (X::* pmf)(); // pointer to member function of X returning int
int* (X::* pmf)(); // pointer to member function returning pointer to int

참고 멤버.

동일한 선언의 함수 및 개체

함수와 개체 같은 선언에는 다음과 같이 선언할 수 있습니다.

int i, *j, f(int k);  // int, pointer to int, function returning int

구문을 일부 상황에서는 잘못 될 수 있습니다.다음 선언

int* i, f(int k);  // pointer to int, function returning int (not int*)

선언은 다음과 같이 보일 수 있습니다는 int 포인터와 반환 하는 함수 int*, 하지만 하지 않습니다.때문에 * 선언 자 위한 부분입니다 i에 대 한 선언 자를의 일부가 f.

선언 자 구문은 형식 정의를 단순화합니다.

그러나, 더 나은 기술을 사용 하는 것은 typedef 또는 괄호를 조합 하는 typedef 키워드.함수에 대 한 포인터의 배열을 선언 하는 고려해 야 합니다.

//  Function returning type int that takes one 
//   argument of type char *.
typedef int (*PIFN)( char * );
//  Declare an array of 7 pointers to functions 
//   returning int and taking one argument of type 
//   char *.
PIFN pifnDispatchArray[7];

해당 하는 선언 하지 않고 쓸 수는 typedef 선언 하지 복잡 잠재적 오류에 대 한 모든 혜택을 초과:

int ( *pifnDispatchArray[7] )( char * );

형식 정의 대 한 자세한 내용은 형식 지정자를 정의.

포인터, 참조, 하나의 기본 형식의 배열에서 단일 선언 (쉼표로 구분)으로 결합 될 수 있습니다.

int i, *i, &i, i[5];

더 복잡 한 선언 자 구문

  • 포인터, 참조, 배열 및 함수 선언 자 개체 배열을 함수에 대 한 포인터, 포인터 배열 등을 지정 하려면 결합할 수 있습니다.

  • 다음 재귀 문법 포인터 선언 자 구문은 완벽 하 게 설명합니다.

  • A declarator 중 하나로 정의 됩니다:

1. identifier 
2. qualified-name 
3. declarator ( argument-list ) [cv-qualfiers] [exception-spec]
4. declarator [ [ constant-expression ] ] 

5. pointer-operator declarator 
6. ( declarator )
  • 포인터 연산자 중 하나입니다.
* [cv-qualifiers]
& [cv-qualifiers]
:: nested-name-specifier * [cv-qualfiers]

선언 자 한 자가 포함 될 수 있기 때문에 복잡 한 파생된 형식이 함수 포인터, 배열 같은 함수 포인터, 배열 반환 위의 규칙을 사용 하 여 구성할 수 있습니다.건축의 각 단계를 구성 하는 식별자 기본 데이터 입력 및 이전 식으로 위의 구문 규칙 적용 표시와 시작을 declarator.구문 규칙을 적용 하는 순서가 반대의 식을 영어로 설명 되어 있어야 합니다.적용 하는 경우는 포인터 연산자 함수 또는 배열 식 구문 규칙 배열 또는 아래 테이블의 마지막 행에서와 같이 함수에 대 한 포인터를 원하는 경우 괄호를 사용 합니다.

다음 예제에서는 생성 "포인터" int 10 포인터의 배열에 표시 됩니다.

구두 식

선언 자

구문 규칙 적용

i

1

pointer(s) 수

*i

5

10의 배열

(*i)[10]

4

에 대 한 포인터

*((*i)[10])

6-5

때 여러 포인터 참조, 배열 또는 함수 한정자 사용 됩니다, 선언 자 매우 복잡 해질 수 있습니다.항목 를 해석 하는 더 복잡 한 선언 자 선언 자 구문은 복잡 한 방법에 설명 합니다.C + +의 있지만, 아무 곳 이나 주제 C 및 C++ 모두에 해당 되는 * 포인터를 Myclass와 같은 정규화 된 이름을 나타내는 데 사용 됩니다:: * 클래스의 멤버에 대 한 포인터를 지정 하는 데 사용할 수 있습니다.

참고 항목

참조

선언 자