• 2022. 5. 25.

    by. 데브촙

    반응형

    배열을 기준으로 포인터와 합체하기

    // char * 형 변수 100개가 필요한 경우
    char *p1, *p2, ... , *p99, *p100;
    char *p[100];	/* char *p1, *p2, ... , *p99, *p100; 라고 선언한것과 같음
    		   포인터가 100개 선언된 것이므로 p 배열의 크기는 400바이트
    		   개별 포인터를 사용하려면 p[0], p[1], ... ,p[100]과 같이 사용 
    		   각 포인터가 가리키는 대상의 값을 읽거나 쓰려면 *p[0] 처럼 사용*/

     

    배열을 기준으로 포인터와 합체하기

     
    char data1, data2, data3, data4, data5;
    char *p[5] = {&data1, &data2, &data3, &data4, &data5};
    for (int i = 0; i<5; i++) *p[i] = 0;	// data1~5까지 모두 0으로 저장

     

     

     

    포인터를 기준으로 배열과 합체하기

     

     

     

     

     

    char data[3][5]의 시작 주소를 char (*p)[5]; 포인터에 저장해서 포인터 p를 사용하여 data 배열의 각 요소 값을 변경하는 예제

    char data[3][5];
    char (*p)[5];
    p = data;
    (*p)[1] = 3;	// p가 가리키는 대상의 2번째 항목에 3을 대입
    (*(p+1))[2] = 4;	// p+1이 가리키는 대상의 3번째 항목에 4를 대입
    (*(p+2))[4] = 5;	// p+2이 가리키는 대상의 5번째 항목에 5를 대입

    괄호가 많이 쓰이는 이유는 연산자 우선순위 때문이니, 너무 복잡하게 생각하지 않아도 된다.

     
    반응형

    'C' 카테고리의 다른 글

    프로그램과 프로세스  (0) 2022.06.08
    배열을 사용하는 포인터  (0) 2022.05.24
    배열과 포인터 표기법  (0) 2022.05.22