如何在数组中存储元素并在C中获取数组长度?

时间:2014-12-03 10:11:33

标签: c

下面的代码是将元素存储在数组中但不返回大小。 我怎样才能获得数组的大小?如果元素插入过程是错误的,那我怎样才能在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

我想将字符串追加到数组

2 个答案:

答案 0 :(得分:2)

此代码在C中是非法的.Braced初始化列表必须至少包含一个初始化程序。如果这为您编译,则您正在利用编译器扩展。 (从内存中,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中增长命名数组。(你可以增长动态分配的数组)。

答案 1 :(得分:0)

您没有为指针数组分配大小,

names[0] = "ashish1";

in that time C compiler allocate memory to pointer so string starting address stored.
"ashish1" string stored on read only memory location.  
if you stored any data first allocate size to *names.