无法从“char [2][10]”转换为“char *”
源程序为:#include <stdio.h>
void main()
{char str[ ][10]={"China","Beijing"},*p=str;
printf("%s\n",p+10);
}
编译时,出错,提示为:1>f:\c_sharp_project\逗号运算符\逗号运算符\001.cpp(38): error C2440: “初始化”: 无法从“char [2][10]”转换为“char *”
我用的VS2010.
[解决办法]
- C/C++ code
char **p=str;
[解决办法]
[code=C/C++][/code]
char str[][10]={"China","Beijing"},(*p)[10]=str;
printf("%s\n",p+1);
输出结果:Beijing
[解决办法]
楼主你要是想编译通过的话,把文件.cpp改成.c,然后就行了,vs里面.cpp文件用的是c++的编译器,.c文件用的是c语言的编译器。
但是你直接*p = str;这样并不是把char[2][10]转换成了char * ,
2楼的写法很好。,(*p)[10]=str;改成这样然后printf("%s\n",p+1);
[解决办法]
- C/C++ code
:#include <stdio.h> void main() { char str[ ][10]={"China","Beijing"}; char *p=str; //左右类型不匹配 -->> char (*p)[10]=str; printf("%s\n",p+10); // p+10 --->> p+1 }
[解决办法]
[解决办法]
#include <stdio.h>
void main()
{
char str[ ][10]={"China","Beijing"},(*p)[10];
p = str;
printf("%s\n",p+10);
}
这样试一试,如果你想使用二重指针可以使用char **q = &p;这时,q和str是指向同一个地址。
[解决办法]
改成指针数组吧
[解决办法]
**p=str;
[解决办法]
char *p = str
那么p[0] = str[0]
str[0][0]如何表示???所以要么**p,要么(*p)[10]
[解决办法]
char str[ ][10]={"China","Beijing"},*p=(char*)str;
printf("%s\n",(p+10));