黑马程序员技术交流社区

标题: 请问如何求“通过指针来实现的字符串数组”所占内存大小 [打印本页]

作者: Tigerleis    时间: 2015-3-27 00:03
标题: 请问如何求“通过指针来实现的字符串数组”所占内存大小
首先定义,两种方式实现字符串数组,分别是数组和指针:
char name[]="Jack";
char* name1="Jack";
printf("sizeof(name)=%zd\n",sizeof(name));  //输出5,表示所占用内存大小,系统添加的'\0'也会被计算入内
printf("sizeof(name1)=%zd\n",sizeof(name1));//输出8,输出的是指针类型的大小

请问如何输出name1这个数组所占内存大小?
换句话如何通过name1这个指针输出这个5,如同name数组一样。
当然printf("sizeof(\"Jack\")=%zd\n",sizeof("Jack"));也是输出5,这个方式不算。



作者: 王昱    时间: 2015-3-27 09:00
int i=1;
while(*name1++)
{
        i++;
}
作者: Tigerleis    时间: 2015-3-27 13:43
王昱 发表于 2015-3-27 09:00
int i=1;
while(*name1++)
{

谢谢,这一行代码的确能够求出来,简洁有效,顺便提醒一下让name1指针自加,从而改变地址,原本的字符串也就挂掉咯,呵呵
作者: Tigerleis    时间: 2015-3-27 15:42
刚刚我又测试了一下,对于指针字符串数组(eg:char* name1="Jack";),我发现其占有内存字节数=strlen(name1)+1,系统会默认在末尾补充一个'\0',虽然不显示出来,不计入元素个数,但是却计算进入该字符串所占空间的大小。
作者: hellooc    时间: 2015-3-28 03:07
name1不是数组,数组和指针还是有区别的




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2