C 如何获取数组中的元素数?

C 如何获取数组中的元素数?,c,arrays,C,Arrays,我创建了一个数组,并将值放入数组中,如下所示 int *ptr_int; int list_int[10]; int i; for (i=0; i<10; i++) list_int[i] = i + 1; int size = sizeof(list_int ) / sizeof( int ); printf( "The size of int is %d.\n", size); 当我尝试获取数组的计数时,如下所示 int *ptr_int; int list_int[10]

我创建了一个数组,并将值放入数组中,如下所示

int *ptr_int;
int list_int[10];
int i;
for (i=0; i<10; i++)
    list_int[i] = i + 1;
int size = sizeof(list_int ) / sizeof( int );
printf( "The size of int is %d.\n", size);
当我尝试获取数组的计数时,如下所示

int *ptr_int;
int list_int[10];
int i;
for (i=0; i<10; i++)
    list_int[i] = i + 1;
int size = sizeof(list_int ) / sizeof( int );
printf( "The size of int is %d.\n", size);
结果只有
10

我怎样才能得到阵列房间的数量

结果只有10个

这才是真正的尺寸。分配给
list\u int[17]
是未定义的行为,它不会神奇地扩展数组

list_int[17] = 18;
这是未定义的行为,因为数组大小仅为10

请注意,除了可变长度数组之外,
sizeof
运算符是编译时运算符。
sizeof(list_int)
sizeof(int)
的结果在编译时确定



要实现具有动态大小的数组,您需要动态分配数组,您可能会发现
realloc
非常有用。

您已经使用以下定义将数组的最大大小定义为10

int list_int[10];
您不能将值赋给
列表\u int[17]
。因为
list\u int[17]
超出了您定义的数组
list\u int[10]
的内存

只能从0向元素赋值。。9创建动态数组(在运行时分配)

intn;
scanf(“%d”,&n);//在运行时从用户读取n
int*x=(int*)malloc(sizeof(int)*n);//其中n是需要分配的元素数
//////之后,您可以使用索引器访问数组(x)
/////读环

对于(int i=0;iC数组不会自动调整大小。如果我想添加/扩展数组,我该怎么做?@ThuRa:从自动分配/释放切换到动态分配/重新分配/释放。@alk,我来自web。我在C有一点经验。所以我不清楚该怎么做。你有什么推荐网站可以这样做吗?我非常感激ThuRa:阅读关于动态内存分配的一般信息,系统调用
malloc()
/
calloc()
realloc()
free()
尤其如此。进行一些测试,学习如何使用它们,如果在使用它们时遇到困难,请返回这里,展示您的发现和问题,提出另一个问题,我们将尽力帮助您。我们可以分配,但不应该,因为这是未定义的行为:)。