포인터 관련 질문입니다.. 에고 포인터 어렵네용 ㅎㅎ
글쓴이: jmonaco88 / 작성시간: 화, 2012/12/04 - 10:05오전
#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; 를 포인터를 이용해서 값을 넣어주고 싶은데요,
왜 자꾸 안되는지 모르겠네요 ^^;;;
배열계산한 포인터가 틀린게 아닐까 싶은데요;;
해답을 부탁드립니다 ㅠ
Forums:
p[44][8] = 99; 혹은 *(*(p + 44)
p[44][8] = 99; 혹은 *(*(p + 44) + 3) = 99; 하시면 될 겁니다.
흠...
더블 포인터를 선언해서 대입하라는 뜻인가요??
p[44][8] 은 p가 배열이 아니고 포인터이기에 색인을 저렇게 사용할수가 없는걸로 알구있구요;;
*(*(p + 44) + 3) = 99 는
p가 일단 그냥 포인터인데...
글쎄요 이건 더블포인터도아니고 알아보기 힘드네요 ㅋㅋ
그리고 혹시나 해서 해봣는데 둘다 안되네요 ^^
제가 올린 소스는 오류는안납니다.. 그냥 제가 인덱스를 잘못 계산한게 아닌가 싶어요
count[44][8] 에 접근하겠다면서 정작 포인터
count[44][8] 에 접근하겠다면서 정작 포인터 계산할 땐 43을 곱하니까 한 행 위쪽의 원소에 99를 넣고 있네요.
그리고 IHaveaquestion 님 답변은 p 가 int (*)[10] 타입일 때 얘기이죠.
좋은 하루 되세요!
역시 ㅎㅎ
답변 감사합니다 ㅋㅋ 될것같은 느낌이 들군요 역시 계산이 실수였네요 ㅠㅠ
댓글 달기