배열에서 const 때어 낼려고 하는데요..

chadr의 이미지

const char tmp[2][9]

라는 배열이 있을때 이를

char tmp[2][9]

로 캐스팅 할려고 합니다.

즉 const를 땔려고 하는데 어떻게 하면 될까요?

배열 말고는 다 해봤는데 배열은 어떻게 하는지를 모르겠군요...

vananamilk의 이미지

캐스팅 할려는 이유가 먼가요? 값을 수정할려구요?

char (*pTmp)[9] = (void *)tmp;
pTmp[0][1] = 'A';

이렇게 pTmp 변수로 수정해두 되구요...

((char *)tmp)[12] = 11;
이렇게 해두 되구요. index [12]는 [1][3]이 되겠네요^

sliver의 이미지

const char a[10][20];

int main()
{
        char (*const b)[20] = (char (*)[20])a;

        /* 여기서부터 b를 const가 키워드가 없는 a와 같다고 생각할 수 있습니다. */
        b[0][1] = 0;
        return 0;
}
익명 사용자의 이미지

sliver wrote:
char (*const b)[20] = (char (*)[20])a;

아까 할때는 위처럼 캐스팅 할려니까 계속 에러나더만~
(char (*)[20])이거 잘 되네요... ㄱㅅㄱㅅ

vananamilk의 이미지

sliver wrote:
char (*const b)[20] = (char (*)[20])a;

((char *[20])a)[0][0] = xx;
이런식으로 캐스팅 할려다가 에러만... *에 ()가 빠졌네요^^^
오늘 실수 투성이넹~

chadr의 이미지

그렇군요. 답변 감사합니다~

-------------------------------------------------------------------------------
It's better to appear stupid and ask question than to be silent and remain stupid.