[英]Number of array elementsbof dynamic allocated array in C
我在动态分配的数组中查找数组元素的数量时遇到问题。 如果我有一个普通的数组,我知道如何使用以下命令找出其中有多少个元素:
int array[] = {1,2,3};
printf("Number of array elements: %i\n",(int)(sizeof(array) / sizeof((array)[0])));
这打印出我:
Number of array elements: 3
但是,当我想动态分配一个数组并知道其大小时,就无法以相同的方式工作:
int *数组;
array = malloc(3*sizeof(int));
printf("Number of array elements: %i\n",(int)(sizeof(array) / sizeof((array)[0])));
这总是给我:
Number of array elements: 2
无论我分配多大或少,它总是打印
2
请有人帮忙吗?
您看到不同大小的原因是因为底层数据不同。
在第一个示例中,您具有静态编译的整数数组 。 该数组元素都在内存中对齐 ,而array
是数组。 使用sizeof(array)
可以获取此数组的整体大小。
在第二个示例中,您在整数数组上有一个动态分配的指针。 这在内存上是完全不同的。 array
变量实际上不是数组。 它是指向第一个元素的指针。 在这里使用sizeof(array)
返回第一个元素上指针的大小,因此为8。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.