簡體   English   中英

C中動態分配的數組的數組元素數

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM