指针指向数组的大小(一个指针指向数组,如何计算数组的长度)

本文目录
一个指针指向数组,如何计算数组的长度
#include 《stdio.h》
int main(){
int a,i;
printf("a数组占用的字节数=%d\n",sizeof(a));
printf("a数组的元素个数=%d\n",sizeof(a)/sizeof(int));
}
关于计算指针指向数组大小
你的情况,没有办法
只用指针p计算出数组a
大小。
如果是:
char
*p;
char
a="123456789";
p=a;
可以用strlen(p)+1
计算
printf("%d
%d\n",sizeof(a),
strlen(p)+1);
如果是p自己动态分配的大小,可以用
_msize,例如:
char
*p;
p
=
(char*)
malloc(sizeof(char)*32);
//
动态分配
printf("%d\n",_msize(p)/sizeof(char));
如何检测指针指向数组的大小
包含头文件#include
《malloc.h》然后在main函数中调用int
t
=
_msize(ss);t就是整个数组大小(int型是4个byte,所以输出是40)t除以4就是数组的容量
怎么用sizeof检测指针指向数组大小
对于cout 《《 _msize(p) 《《 endl;,输出应该是24,因为_msize(p)“返回在堆中分配的内存块的大小”,你为p分配了6个int空间,每个int是4字节。
而对于cout 《《 sizeof(*p) 《《 endl;,输出是一个int型数据所占内存的大小,在32位机上是4,在16位机上是2。如果写成cout 《《 sizeof(p) 《《 endl;,输出仍然是4,因为p是指针,只需要4字节。

更多文章:
二郎腿吧我发表了一张图片贴(求一张脚踝扭伤的真实图片,连续工作两个星期了,答应了女朋友出去玩大家帮帮忙)
2026年9月10日 14:10
angular momentum公式(impulse和momentum的公式)
2026年9月10日 13:50
web service 技术发展(web service技术是不是落后了)
2026年9月10日 12:20
clouddata(iCloud怎么读 iCloud如何读)
2026年9月10日 08:30





