c语言char (*p)[10];和char **w;是同一类型吗 最后一个printf有问题 解释下错在哪里了

#include<stdio.h>
main()
{
char* b[2]={"fewfwef","fwfwfwq"};
char c[2][10]={"qwfwfwsf","dwgerge"};
char (*p)[10];
char **w;
p=c;
w=p;
printf("%c\n",*c[1]);
printf("%s\n",*(w+1));
}

(1)、char (*)p[10]跟char **w不是同一个类型

char **w是指针的指针。
如果定义一个char ch='a',*p;
p=&a;
那么 w=&p
不知道这样解释你明白不?

char *p[]跟char (*p)[]的区别

char *p[] 表示指针数组。元素全部是指向char型的指针。

char (*p)[] 表示指向一个char型一维数组的指针

(2)、根据你的代码,c表示数组第0行的首地址
你如果想输出dwgerge。只需

#include<stdio.h>

int main()
{
char *b[2]={"fewfwef","fwfwfwq"};
char c[2][10]={"qwfwfwsf","dwgerge"};
char (*p)[10];
char **w;
p=c;
w=p;
printf("%c\n",*c[1]);
printf("%s\n",c+1);
return 0;
}

有疑问可以去自学去网站交流,这个论坛值得一去。http://www.zixue7.com/?fromuid=12123
温馨提示:答案为网友推荐,仅供参考
第1个回答  2014-09-07
char (*p)[10];和char **w; 不是同一个类型
char (*p)[10];指向的是char (*)[10]
char **w;指向的是char *
这段代码应该是有些编译器会报错,w=p赋值有问题
w+1增加的偏移量为w指向数据类型(char *)的偏移量
相似回答