如下代码
#include <stdio.h>
int main(void)
{
const int (*p)[2];
p=(const int (*)[2])0;
*p=(const int *)1;
return 0;
}
在*p=(const int *)1;
这一行出错
提示不兼容,图片如下:
请问要把1强制类型转换成什么类型,编译器才不会报错?
如下代码
#include <stdio.h>
int main(void)
{
const int (*p)[2];
p=(const int (*)[2])0;
*p=(const int *)1;
return 0;
}
在*p=(const int *)1;
这一行出错
提示不兼容,图片如下:
请问要把1强制类型转换成什么类型,编译器才不会报错?
p
是一个指针,指向的数据类型是const int [2]
,即指向一个int
型的长度为2
数组,且这个数组的元素是常量
转成什么类型不报错? 那要看你的目的是啥,说实话,我没看懂你的这个片段想要做什么
7 回答5.3k 阅读
3 回答2k 阅读✓ 已解决
4 回答4k 阅读
2 回答3.9k 阅读✓ 已解决
2 回答5.9k 阅读✓ 已解决
2 回答3.2k 阅读✓ 已解决
1 回答3.2k 阅读✓ 已解决
*p 就是 const int[2] ,是一个数组类型。
然而 C 并不支持数组直接复制,所以转换成什么编译都是过不了的。