복수의 다차원 배열을 가리키는 포인터의 배열

4425 단어 C
요전날, 복수의 다차원 배열을 가리키는 포인터의 배열을 구현하려고 했기 때문에 비망록이 테라 기사를 쓴다.

달성하고 싶은 일



복수 정의된 다차원 배열에 변수 조작으로 액세스하고 싶다.
예를 들어 아래 그림과 같이 PtrArray [0]로하면 배열 a에 액세스 할 수 있고 PtrArray [1]로하면 배열 b에 액세스 할 수 있습니다.



구현


#include <stdio.h>

const unsigned char a[2][3] = {{0, 1, 2}, {3, 4, 5}};
const unsigned char b[2][3] = {{10, 11, 12}, {13, 14, 15}};
const unsigned char c[2][3] = {{100, 110, 120}, {130, 140, 150}};

// unsigned char型のデータを指し示すポインタの配列(配列のアドレスを格納)
const unsigned char *PtrArray[3] = {
    a,
    b,
    c,
};

int main(void)
{
    unsigned char (*p)[3];
    p = PtrArray[1];       // 右辺の要素番号で指し示す配列を切り替える。この場合は配列bを指し示すようにする。

    // 配列bから値14を取得する
    printf("val: %d\n", *(p[1]+1));

    // もちろん、単純にこれでもOK(突然の+4は困惑するかもしれない。)
    printf("val: %d\n", *(PtrArray[1]+4));
}

좋은 웹페이지 즐겨찾기