[英]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.