在C头文件中声明一个指针数组并赋值?

时间:2011-06-01 20:19:31

标签: c arrays pointers header-files

是否可以声明一个指针数组,然后在C头文件中初始化它们中的任何一个并赋值?

char *i[2];  
i[0] = "abc";

以下不起作用。

char *x = "def"; // this will, of course.

我应该如何为指针数组声明和赋值?

4 个答案:

答案 0 :(得分:2)

这与头文件无关。你不能创建.c文件并输入如下代码:

char *i[2];  
i[0] = "abc";

在C中,除了定义和初始化之外的所有代码都必须在函数内部,而你的第二个语句都不是这些 - 它是一个赋值。

您的阵列的初始化将如下所示:

char *i[2] = {"foo","bar"};

这可以放在头文件中,但如果在多个翻译单元中使用标题会导致多个定义错误。

答案 1 :(得分:0)

技术上可行。但是你应该从不在头文件上声明变量。在 .c 文件上执行此操作。

此外,您应该使用以下内容初始化char *向量:

char *i[2] = { "ABC", "CDE" };

答案 2 :(得分:0)

这是你要找的吗?

char *i[2] = {"abc", "def"};

虽然除非你制作const char *

,否则它会给你一个警告
const char *i[2] = {"abc", "def"};

答案 3 :(得分:0)

您确定您的代码

char *i[2];  
i[0] = "abc";

不起作用?你能发布错误吗?

我在gcc和vc ++中试过这个并且它运行得很好。

您也可以通过此链接查看教程: http://ee.hawaii.edu/~tep/EE160/Book/chap9/section2.1.4.html

摘录:

  

char * nameptr [MAX];

     

数组nameptr []是一个数组   大小MAX,和每个元素   array是一个字符指针。它是   然后可以分配字符   指针值的元素   阵列;例如:

     

nameptr [i] =“John Smith”;

     

放置字符串“John Smith”   编译器在内存中的某个地方   和指向字符串常量的指针   然后被分配给nameptr [i]。