2차원배열 포인터 질문 좀..
포인터 좀 자세히 알려고자 질문 좀 드릴꼐여~;;
#include
main ()
{
int ttt[3][2] = {{6,3}, {5, 9} , {8, 2}};
int (*ppp)[2] = ttt;
printf("ppp+0값 %d\n", ppp + 0);
printf("ppp+1값 %d\n", ppp + 1);
printf("ppp+2값 %d\n", ppp + 2);
printf("*(ppp + 0)값 %d\n", *(ppp + 0));
printf("*(ppp + 1)값 %d\n", *(ppp + 1));
printf("*(ppp + 2)값 %d\n", *(ppp + 2));
}
답
ppp+0값 -1073747184
ppp+1값 -1073747176
ppp+2값 -1073747168
*(ppp + 0)값 -1073747184
*(ppp + 1)값 -1073747176
*(ppp + 2)값 -1073747168
이런식의 답이 나오더군여 이해는 했는데 여기에다가 sizeof 연산자를 대입해보니..
답
444
888
이 나오더군여 왜 주소값은 같은데 sizeof값은 다른지.. 이해가 않가네여
책에선
ppp +0은 단지 ppp가 가르키는 곳에서 0번쨰 떨어진 곳의 주소를 뜻하고 있다.
ppp가 행단위로 움직이기 떄문에 혹시 9 이라고 착각하지않도록 조심해야한다.
*(ppp +0)은 ppp에서 0번쨰 떨어진 대상체를 뜻하므로 8이라는 수치가 출력된다.
이렇게 설명을 해준던데
도저히 무슨말인지 .... 풀이 좀 부탁드립니다 ㅠ.ㅠ..
코드도 찌그러져
코드도 찌그러져 보이고, main의 리턴 값도 없고, 포인터도 %p로 안찍고... :twisted: 뭐, 어쨌든
sizeof는 말 그대로 대상의 크기를 알려주죠. ppp+0은 포인터니까 4. *(ppp+0)은 int 두개짜리 배열이니까 8.
책에 나온 말은 해석불가네요. ppp는 포인터고, *ppp는 int 배열이므로 **ppp가 6이 되겠군요.
흠.. "다시
흠.. "다시 체계적으로 배우는 포인터" 에서 똑같이 썻는데여 ..
다만 틀린게 있다면 %d로 다 봐꿨다는거 이상하게 적혀 있어서
감사해여.. 그냥 점찍힌 수대로 이해하면 되겟군여..;;;;;;;
모르는건 물어보라구 엄마 아빠가 알려주셧습니다
고수님,선배님들 도와주십쇼 독학하는 학생입니다
저 문제하고는 상관없지만..
모르는건 물어보라구 엄마 아빠가 알려주셧습니다
고수님,선배님들 도와주십쇼 독학하는 학생입니다
상관없지만 이 책 자체가 오타가 많타네여.. 홈페이지가서 오타 찾아볼려고
hwp 파일이라 못열어 보고 있네여 흠..
모르는건 물어보라구 엄마 아빠가 알려주셧습니다
고수님,선배님들 도와주십쇼 독학하는 학생입니다
변수 ttt와 포인터 ppp의 차이를 말씀하시는건가요?
아님 포인터 ppp와 이중포인터 ppp의 사이즈가 궁금하신건가요?
포인터의 자료형에 따른 메모리 할당량(크기)를 찾아보세요.
내 마음속의 악마가 자꾸만 나를 부추겨.
늘 해왔던 것에 만족하지 말고 뭔가 불가능해 보이는 것을 하라고 말야.
내 마음속의 악마가 자꾸만 나를 부추겨.
늘 해왔던 것에 만족하지 말고 뭔가 불가능해 보이는 것을 하라고 말야.
이해했어여 저거~
모르는건 물어보라구 엄마 아빠가 알려주셧습니다
고수님,선배님들 도와주십쇼 독학하는 학생입니다
이제 공부 좀 많이많이 하고 질문하야되겟네여..
다시보니.. 멍청한 질문을한듯.. 감사합니다;~~
printf("ppp+0값 %d\n", sizeof(ppp + 0));
printf("*(ppp + 2)값 %d\n", sizeof(*(ppp + 0)));
위에꺼는 0번쨰값을 가르켜 4고
밑에꺼는 한행을 가르켜서 8이고..
모르는건 물어보라구 엄마 아빠가 알려주셧습니다
고수님,선배님들 도와주십쇼 독학하는 학생입니다
댓글 달기