我们说我有
char *greeting = "Hello";
char *names[] = { "Tom", "Jerry" };
我可以声明指向names
的char的指针,就像这个
char **names2 = names;
但我不能为greeting
这样做。
我得到警告:从不兼容的指针类型初始化。
为什么呢? greeting
是指向char
的指针,就像names
是指向char
的指针数组一样,为什么我不能声明指向greeting
的指针}?
答案 0 :(得分:1)
您只需使用1x *!
因为char *和char **是不同的类型!
因此,您尝试将类型为char *的变量分配给类型为char **
的变量这会给你一个警告
所以这应该有效:
char *greeting = "Hello";
char *names[] = { "Tom", "Jerry" };
char *greeting2 = greeting; //Type char *
char **names2 = names; //Type char **
答案 1 :(得分:-1)
在C中,指针和数组密切相关。
做类似的事情:
char* names[] = {"Tom","Jerry"};
与做
之类的事情相同char** names = {"Tom", "Jerry"};
char*
值不能分配给char**
值,因为它们属于不同类型。
char greeting[8] = "Hello";
char names[][5] = { "Tom", "Jerry" };
上面的示例应该明确指出,greetings
是单维数组,而names
是一个二维数组,因此两者是不兼容的