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

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式