포인터 관련 질문입니다.. 에고 포인터 어렵네용 ㅎㅎ

jmonaco88의 이미지

#include <stdio.h>
 
int main()
{
        int count[100][10];
        int *p;
 
        p = (int *)count;
 
        *(p + (43*10) +8 ) = 99;
 
        printf("%d\n", p);
        //printf("%d\n", count[44][8]);
 
        return 0;
}

count[44][8] = 99; 를 포인터를 이용해서 값을 넣어주고 싶은데요,

왜 자꾸 안되는지 모르겠네요 ^^;;;

배열계산한 포인터가 틀린게 아닐까 싶은데요;;

해답을 부탁드립니다 ㅠ

Ihaveaquestion의 이미지

p[44][8] = 99; 혹은 *(*(p + 44) + 3) = 99; 하시면 될 겁니다.

jmonaco88의 이미지

더블 포인터를 선언해서 대입하라는 뜻인가요??

p[44][8] 은 p가 배열이 아니고 포인터이기에 색인을 저렇게 사용할수가 없는걸로 알구있구요;;

*(*(p + 44) + 3) = 99 는

p가 일단 그냥 포인터인데...

글쎄요 이건 더블포인터도아니고 알아보기 힘드네요 ㅋㅋ

그리고 혹시나 해서 해봣는데 둘다 안되네요 ^^

제가 올린 소스는 오류는안납니다.. 그냥 제가 인덱스를 잘못 계산한게 아닌가 싶어요

raymundo의 이미지

count[44][8] 에 접근하겠다면서 정작 포인터 계산할 땐 43을 곱하니까 한 행 위쪽의 원소에 99를 넣고 있네요.

    *(p + (44*10) +8 ) = 99;
    printf("%d\n", count[44][8]);     // 99

그리고 IHaveaquestion 님 답변은 p 가 int (*)[10] 타입일 때 얘기이죠.

좋은 하루 되세요!

jmonaco88의 이미지

답변 감사합니다 ㅋㅋ 될것같은 느낌이 들군요 역시 계산이 실수였네요 ㅠㅠ