스칼라 형식 초기화

때 초기화 하는 스칼라 형식의 경우 값의 할당 식 변수에 할당 됩니다.할당에 대 한 변환 규칙을 적용합니다.(참조 하십시오 형식 변환 변환 규칙에 대 한 내용은.)

구문

  • declaration:
    선언 지정자 init 선언 자 목록 선택**;**

  • 선언 지정자:
    저장소 클래스 지정자 선언 지정자 선택

    형식 지정 자가 선언 지정자 선택

    형식 한정자 선언 지정자 선택

  • init 선언 자 목록:
    초기화를 선언 자

    init 선언 자 목록 , init 선언 자

  • 초기화를 선언 자:
    선언 자

    선언 자 = 이니셜라이저 / * 스칼라 초기화 * /

  • 이니셜라이저:
    대입 식

다음 규칙을 준수 해야 하는 경우에 모든 형식의 변수를 초기화할 수 있습니다.

  • 파일 범위 수준에서 선언 된 변수를 초기화할 수 있습니다.외부 수준에서 변수를 명시적으로 초기화 하지 않는 경우는 기본적으로 0으로 초기화 됩니다.

  • 선언 된 전역 변수를 초기화 하려면 상수 식을 사용할 수 있는 정적저장소 클래스 지정자. 선언에 변수 정적 프로그램이 실행 될 때 초기화 됩니다.명시적으로 전역 초기화 하지 않는 경우 정적 변수는 기본적으로 초기화 됩니다 및 포인터 형식의 모든 멤버는 null 포인터 할당 됩니다.

  • 로 선언 된 변수는 자동 또는 등록 저장소 클래스 지정자를 실행 제어 블록을 지날 때마다 초기화 되는 선언 된.이니셜라이저 선언에서 생략할 경우는 자동 또는 등록 변수는 변수의 초기 값 정의 되지 않습니다.자동에 대 한 이니셜라이저를 레지스터 값 상수; 하는 제한 된 수 없습니다 것도 함수 호출 이전에 정의 된 값과 관련 된 모든 식 수 있습니다.

  • 초기 값 외부 변수를 선언 하 고 모든 정적 변수를 외부 또는 내부에 있어야 상수 식입니다.(자세한 내용은 상수 식입니다.) 모든 외부에서 선언 된 또는 정적 변수의 주소를 일정 하 게 유지 되므로 내부적으로 선언 된 초기화에 사용 되는 수 있습니다 정적 포인터 변수입니다.그러나 주소는 자동 블록의 각 실행에 대해 서로 다른 수 있기 때문에 변수는 정적 이니셜라이저를 사용할 수 없습니다.값은 상수 또는 변수를 사용 하 여 초기화할 수 자동등록 변수입니다.

  • 외부 링크의 식별자가 식별자 선언 블록 범위를 가지 않으면 초기화 선언을 사용할 수 없습니다.

예제

다음 예제에서는 초기화를 보여 줍니다.

int x = 10; 

정수 변수 x 상수 식으로 초기화 됩니다 10.

register int *px = 0;

포인터 px "null" 포인터를 생성, 초기화 됩니다.

const int c = (3 * 1024);

상수 식은이 예제를 사용 하 여 (3 * 1024) 초기화 합니다 c 때문에 수정할 수 없는 상수 값은 const 키워드.

int *b = &x;

이 문은 포인터 초기화 b 또 다른 변수의 주소를 x.

int *const a = &z;

포인터 a 라는 변수는 주소와 초기화 됩니다 z.그러나 이후이 지정 하는 const, 변수 a , 수정 초기화만 할 수 있습니다.항상 같은 위치를 가리키는.

int GLOBAL ;

int function( void )
{
    int LOCAL ;
    static int *lp = &LOCAL;   /* Illegal initialization */
    static int *gp = &GLOBAL;  /* Legal initialization   */
    register int *rp = &LOCAL; /* Legal initialization   */
}

전역 변수 GLOBAL 외부 수준에서 선언 되므로 전역 수명이 있습니다.로컬 변수 LOCAL 가 자동 저장소 클래스 에서만 선언 된 함수를 실행 하는 동안 주소를 갖습니다.따라서 초기화 하는 중에 정적 포인터 변수 lp 의 주소 LOCAL 사용할 수는 없습니다.해당 정적 포인터 변수 gp 주소를 초기화할 수 있습니다 GLOBAL 그 주소가 항상 동일 하기 때문입니다.마찬가지로, *rp 때문에 초기화할 수 있습니다 rp 로컬 변수 이며 비상수 이니셜라이저를 가질 수 있습니다.블록 입력 될 때마다 LOCAL 할당 되는 새 주소를가지고 rp.

참고 항목

개념

초기화