是否可以声明一个指针数组,然后在C
头文件中初始化它们中的任何一个并赋值?
char *i[2];
i[0] = "abc";
以下不起作用。
char *x = "def"; // this will, of course.
我应该如何为指针数组声明和赋值?
答案 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]。