我遇到了问题.我试图获取int数组中的元素数量,而不传递任何显式参数,只是指向int数组的指针.现在我的好奇心:
int * set;
printf("-- %d --", sizeof(set)); //4
set=(int *) malloc(n*sizeof(int));
printf("-- %d --", sizeof(set)); //4
Run Code Online (Sandbox Code Playgroud)
为什么值在malloc未初始化之前和之后都是相同的.谢谢
UPDATE:
有没有办法获得int数组的长度?
没有通用的方法来测量C中指针所指向的内存大小,除了字符串按惯例终止的特殊情况.
sizeof 将产生指针的大小(32位系统上4个字节,64位系统上8个字节),而不是指向的内存.
如果要跟踪分配的内存大小,选项包括:
int 如果您的应用程序永远不会有效地使用该值,则为最小值或最大值.