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()
尤其如此。进行一些测试,学习如何使用它们,如果在使用它们时遇到困难,请返回这里,展示您的发现和问题,提出另一个问题,我们将尽力帮助您。我们可以分配,但不应该,因为这是未定义的行为:)。