const int (*p)[2];中*p是什么类型?

如下代码

#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强制类型转换成什么类型,编译器才不会报错?

阅读 3.4k
3 个回答

*p 就是 const int[2] ,是一个数组类型。

然而 C 并不支持数组直接复制,所以转换成什么编译都是过不了的。

*p 是指针类型
p指向了地址
强类型语言中是不允许一个整形直接赋值给数组的

*p=(const int *)1; // 你直接让整形指针赋值给数组指针肯定会报错的

p是一个指针,指向的数据类型是const int [2],即指向一个int型的长度为2数组,且这个数组的元素是常量

转成什么类型不报错? 那要看你的目的是啥,说实话,我没看懂你的这个片段想要做什么

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题