我最近一直在学习C编程并编写一些代码。下面是我写的代码:
#include <stdio.h>
int main(int argc, char ** argv){
int num[] = {10, 15, 25, 30, 45, 10};
char *names[][11] = {"Drew", "Larry Page", "Seggy", "Mark"};
//int *ip, i = 0;
char **ip;
int *p, i = 0, j = 0;
for (ip = names; *(ip + i); i++)
printf("%s ", *(ip + i));
printf("\n\n");
for (p = num; j < sizeof(num)/sizeof(num[0]); j++)
printf("%d ", *(p + j));
printf("\n");
return 0;
}
当我构建并运行上面的代码时,我得到了我想要的结果。但是我收到这个警告:
jdoodle.c:12:13: warning: assignment from incompatible pointer type [-Wincompatible-pointer-types]
for (ip = names; *(ip + i); i++)
^
我已经在各种 IDE 上测试了代码,但得到了类似的警告。感谢协助。
最佳答案
问题出在这一行:
char *names[][11] = {"Drew", "Larry Page", "Seggy", "Mark"};
你不需要指向 char
的二维指针数组,你想要一个指向 char
的指针数组:
char *names[] = {"Drew", "Larry Page", "Seggy", "Mark"}; /* Don't hardcode 11 */
关于c - 代码编译后从不兼容的指针类型赋值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50113098/