• 2022. 5. 22.

    by. 데브촙

    반응형

    배열 표기법과 포인터 표기법의 관계

    //배열
    char data[5];
    data[1]= 5;
    *(data + 1 ) = 5; // 위 배열할당 표현과 같은 표현
    
    // 포인터
    char data;
    char *p = &data;
    *p = 3;
    p[0] = 3; // 위 포인터 할당 표현과 같은 표현

     

    배열 표기법의 한계

    int data[2] = {0x12345678, 0x12345678};

     

     

    data[0] = 0x22; // data 배열 항목의 크기가 4바이트이기 때문에 한꺼번에 값이 변경되어 값 0x00000022가 대입됨

     

    // 위 예제에서 배열 표기법 대신 포인터 표기법을 사용하면?
    int data[2] = {0x12345678, 0x12345678};
    // 일시적으로 int * 형을 char * 형으로 변환
    *(char*)(data+1) = 0x22;

    자기가 원하는 번지의 값으로 형변환 캐스팅을 걸어서 바꿀수 있음

    이는 배열과 포인터가 문법적 혼용이 가능. 같다는 의미는 아님

     
    반응형

    'C' 카테고리의 다른 글

    배열을 사용하는 포인터  (0) 2022.05.24
    표준 입력 함수 scanf  (0) 2022.05.21
    문자열을 정수로 변환  (0) 2022.05.20