int _tmain(int argc, _TCHAR* argv[])
{
Func("dd");
char szBuf[12] = "123456789";
char *p = "123456789";
::Sleep(1000);
printf("szBuf : %s/n",szBuf);
::Sleep(1000);
printf("p : %s/n",p);
::Sleep(1000);
printf("sizeof(p) : %d/n",sizeof(p));
::Sleep(1000);
printf("sizeof(szBuf) : %d/n",sizeof(szBuf));
::Sleep(1000);
return 0;
}
打印结果如下:
szBuf : 123456789
p : 123456789
sizeof(p) : 4
sizeof(szBuf) : 12
通过测试发现,对于这种字符数组,和字符串指针是有区别的,字符数组他保存了字符数组大小的信息,而字符串指针则没有!!!!
对于字符数组通过sizeof算出来的大小并不是实际存储的字符大小,而是他本身定义的大小!!
本文通过一个简单的C++示例程序,展示了字符数组与字符串指针在内存中占用空间的区别。字符数组通过sizeof运算符得到的是其定义的大小而非实际存储字符的长度,而字符串指针得到的是指针变量本身的大小。
14万+

被折叠的 条评论
为什么被折叠?



