下面的代码将元素存储在数组中,但不返回大小。我怎样才能得到数组的大小?如果元素插入过程错误,那么我如何在c中实现相同的操作
#include <stdio.h>
#include <string.h>
char *names[] = {};
int main ()
{
names[0] = "ashish1";
names[3] = "ashish";
printf("%s\n",names[0]);
printf("%d",sizeof(names));
return 0;
}
输出:
ashish1 0应该是ashish1 2
我想将字符串追加到数组中
此代码在C中是非法的。加括号的初始化程序列表必须至少包含一个初始化程序。如果这为您编译,则您正在利用编译器扩展。(从内存中,gcc将其视为零大小的数组)。
为了使代码正常工作,您必须使其足够大:
char const *names[4]; // no initializer required, globals default to zero-initialized
int main()
{
names[0] = "ashish1";
names[3] = "ashish";
printf("%s\n", names[0]);
printf("%zu\n", sizeof names / sizeof names[0]);
}
数组大小必须在声明数组时固定。您不能在C中增长命名数组。(但是,您可以增长动态分配的数组)。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句