永发信息网

编译出现warning: assignment from incompatible pointer type的警告

答案:2  悬赏:0  手机版
解决时间 2021-02-02 07:19
#include
shur(char *p)
{int i;
for(i=0;i<3;i++)
gets(p+i);
}
main()
{char str1[3][20];
int i;
shur(str1);
for(i=0;i<3;i++)
printf("%s\n",str1[i]);
}
最佳答案
意思是类型不匹配
全部回答
不同的编译器,对于不同类型间的指针变量进行赋值的编译检查是不一样的,有的报警告,有的报错误,如以下代码: int main() {     char a[3][6]={"hello", "world"};     char *p;     p=a;     printf("%c\n", *p ); //输出h     return 0; }在devc++工具下,编译通过,报警告: [warning] assignment from incompatible pointer type  在vc6工具下,编译出错,报错误:error c2440: '=' : cannot convert from 'char [3][6]' to 'char *'   types pointed to are unrelated; conversion requires reinterpret_cast, c-style cast or function-style cast (大意为类型转换错误,需要强制转换) 如果确信以上代码就是编者想要的,想去除警告或是错误,可以通过强制转换来完成: int main() {     char a[3][6]={"hello", "world"};     char *p;     p=(char *)a; //只需要改这里,强制转换成与p的类型相一致     printf("%c\n", *p ); //输出h     return 0; }再到两个工具上进行编译,可以通过了! 附:以上是想通过一个一维指针来访问一个二维数组,因为二维数组是连续存放数据的,所以,可以通过一维指针来遍历到二维数组中的所有元素。但如果是想通过指针来逐行访问二维数组的数据,则应该采用数组指针来编写代码: #include int main() { int i;     char a[3][6]={"hello", "world"};     char (*p)[6];     p=a; //可以直接赋值,不会有错 for( i=0;i<3;i++ ) printf("%s\n", p++ ); //输出一行,并将p指向下一行     return 0; }
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
为什么我喜欢闻被子,而且晒过得觉得更好闻。
筋疲力敝的意思是什么啊?知道的请说下!
改善水质的简单方法给滤材挂膜 挂膜指的是
给员工开收入证明,对公司有影响吗?谢谢!
怎么样才能使自己的内心变的平静
畅通货运部地址有知道的么?有点事想过去
衡水到武强的最后一趟汽车是下午几点
细胞的统一性体现在。①细胞都有相似的基本结
请问,忘记爱问密码怎么办?,如题!!
和平货运部地址好找么,我有些事要过去
贴金的意思是什么啊?知道的请说下!
儒学自汉代以来便被尊为庙堂之学,居于古代思
新武林外传的生产任务在哪里做还有怎样可以升
恒路物流地址在哪,我要去那里办事
【刀走偏锋】捉金蝉作文
推荐资讯
下列会对个人理财业务的发展产生影响的因素有
新蓝鸟汽车2015款刹车异响
浙江警察学院关于视力的检查是怎么样的
疯狂猜成语2 两个女人走在路上的背影 头上两
.早晨排队做操,每行12人,一共可以站成几行?(5
醶水的意思是什么啊?知道的请说下!
中国自愿去沙漠种树的中国人
中通快递(光复路分部)(光复西路168中通快递)
在广西贺州八步区判刑了余期只剩一年,会送去
关于恐怖情绪,下列说法中不正确的是()。A.出
在中国,如何申请FDA认证?
房山长阳环岛到大兴采育开发区怎么坐车
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?