关于C++中sizeof的用法求教
//定义一个数组charstr1[10];//定义一个指针指向这个数组char*p=str1;printf("%d\n",sizeofstr1);//等于10printf...
//定义一个数组
char str1[10];
//定义一个指针指向这个数组
char* p = str1;
printf("%d\n", sizeof str1); //等于10
printf("%d\n", sizeof p); //等于4
printf("%d\n", sizeof (*p)); //等于1,为啥呢?
*p不是等价于str1么?
那我就是要用sizeof求出指针所对应数组的大小该怎么操作呢? 展开
char str1[10];
//定义一个指针指向这个数组
char* p = str1;
printf("%d\n", sizeof str1); //等于10
printf("%d\n", sizeof p); //等于4
printf("%d\n", sizeof (*p)); //等于1,为啥呢?
*p不是等价于str1么?
那我就是要用sizeof求出指针所对应数组的大小该怎么操作呢? 展开
1个回答
展开全部
第一个,数组名代表整个数组的长度,所以10个字节。
第二个,一个之中的长度就是默认四个字节,记住就行了。以后慢慢理解。
第三个,*p代表的第一个数组元素,str[0],因为数组元素类型是char,所以为1啊。
第二个,一个之中的长度就是默认四个字节,记住就行了。以后慢慢理解。
第三个,*p代表的第一个数组元素,str[0],因为数组元素类型是char,所以为1啊。
追问
好吧,想不通编译器会这么理解,两个的值都是同一个地址的呀
追答
你应该去看看C语言深度解剖这本书,这本书里面讲的很详细了,而且对于深刻理解C语言有很大帮助。sizeof是对数据类型而言的,不是看是不是同一个地址。str1的数据类型可以理解成char[10],占10个字节;同理,p的数据类型是字符型指针,占4个字节。你在自己琢磨一下~
大雅新科技有限公司
2024-11-19 广告
2024-11-19 广告
这方面更多更全面的信息其实可以找下大雅新。深圳市大雅新科技有限公司从事KVM延长器,DVI延长器,USB延长器,键盘鼠标延长器,双绞线视频传输器,VGA视频双绞线传输器,VGA延长器,VGA视频延长器,DVI KVM 切换器等,优质供应商,...
点击进入详情页
本回答由大雅新科技有限公司提供
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询