sizeof测量数组的长度问题
char *a =new char[3];
cout<<sizeof(a)<<sizeof(*a);这个输出的分别是4,1
然而 char a[3];
cout<<sizeof(a)<<sizeof(*a);输出的是3,1;
请问这个到底是为什么啊?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(11)
int len=sizeof(a) / sizeof(a[0]);
没呢,64位还没有真正的普遍,现在还是32位的最多
没呢,64位的还没有真正普遍,现在还是32位最多
sizeof计算的的是占用栈空间的大小,这样理解是不是更准确些。
回复
和栈没毛关系,栈只是个存储方式而已。和实际存储区毛关系没有。 sizeof和实际存储空间大小有关系。哈。
sizeof运算符是获取占用内存空间的大小。指针在32位机器中所占的内存大小永远是4个字节。
sizeof运算符是获取占用内存空间的大小。指针在32位机器中所占的内存大小永远是4个字节。
根本原因还是C++的可读性,就这个例子看可读性为0,写好注释
如果是char *a=new char[3];这么定义的,只通过变量a是无法获得数组大小的,只能用其他变量把定义时的长度保存起来。
a 是一个指针 sizeof(a) 计算的是指针大小
a 是一个数组 sizeof(a) 计算的是数组大小
a 是一个指针 sizeof(a) 计算的是指针大小
a 是一个数组 sizeof(a) 计算的是数组大小