|
http://www.hackerschool.org/HS_Boards/zboard.php?AllArticle=true&no=2840 [복사]
포인터가 엄청 중요한데서 잘집고 넘어가야 될것같아서 앞으로도 많이 물어보겠습니다
#include <stdio.h>
int main(void)
{
char* str1 = "Good!";
char* str2 = "Good!";
printf("%d, %d \n", str1, str2);
return 0;
}
원래 이것인데
str1 = "Good!!"
str2 = "Good!"
이렇게하면 주소가 바뀌는데
20의 차이가 나네요
그런데 반대로
str1 = "Good!"
str2 = "Good!!"
이렇게 하면
메모리 크기의 순서가 바뀔줄 알았는데
어떻게 바꾸든
계속 첫번째것이 20차이가 나네요...
왜그런거죠??
아참 그리고 한번
str1, str2둘다 "Good!"어렇게 한다음에
그다음 라인에서 바꿔볼려고 해봤는데
"중요한 것은 문자열이 상수이므로 내용 변경이 불가능하다는 것이다."
라고....
어쨋든
왜 메모리 크기는 20차이가 나나요??
God!
Good!
이렇게해도 20차이에요
--------------------------------------------------------------------------
2번째 질문
#include <stdio.h>
int main(void)
{
int arr[5];
int* pArr=arr;
printf("%d \n", sizeof(arr)); //20출력
printf("%d \n", sizeof(pArr)); //4출력
return 0;
}
에서 4가 왜 출력되죠?? 포인터 변수의 크기.. 즉 int가 먹는 메모리의 크기 아닌가요?
근데 double 이나 char 로 바꿔도 4가 나와요...
[5]를 바꿔도 4가 나오고...흠....
포인터 변수의 크기....
int의 크기 아닌가??
double 이나 char로 바꿔보세요. 제 컴 이 이상한가?? |
Hit : 5094 Date : 2011/01/06 08:57
|