A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

首先定义,两种方式实现字符串数组,分别是数组和指针:
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,这个方式不算。


4 个回复

倒序浏览
int i=1;
while(*name1++)
{
        i++;
}
回复 使用道具 举报
王昱 发表于 2015-3-27 09:00
int i=1;
while(*name1++)
{

谢谢,这一行代码的确能够求出来,简洁有效,顺便提醒一下让name1指针自加,从而改变地址,原本的字符串也就挂掉咯,呵呵
回复 使用道具 举报
刚刚我又测试了一下,对于指针字符串数组(eg:char* name1="Jack";),我发现其占有内存字节数=strlen(name1)+1,系统会默认在末尾补充一个'\0',虽然不显示出来,不计入元素个数,但是却计算进入该字符串所占空间的大小。
回复 使用道具 举报
name1不是数组,数组和指针还是有区别的
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马