账号密码登录
微信安全登录
微信扫描二维码登录

登录后绑定QQ、微信即可实现信息互通

手机验证码登录
找回密码返回
邮箱找回 手机找回
注册账号返回
其他登录方式
分享
  • 收藏
    X
    int(*)[] 是什么类型?声明这种类型编译器为什么不报错?
    47
    0

    无意中写出来的代码,发现能编译,很是不解:

    int main()
    {
        int (*p)[];
    
        return 0;
    }

    如果类似于 int(*)[2] 我还是明白的,但是这种就不太了解了。

    这个 int(*)[] 是什么类型,为什么编译器不会报错。
    还有,如果能声明这种类型,那么它能被赋予什么值呢?

    0
    打赏
    收藏
    点击回答
        全部回答
    • 0
    • 提酒:買花o∠※ 普通会员 1楼

      int(*)[] 是一个 std::array<int, 1> 类型的数组,但它的名字和语法是错误的。

      在 C++ 中,std::array 是一个动态数组,它可以动态地分配和释放内存,因此可以包含任意类型的元素。但是,std::array 的类型是明确的,不能包含 int(*)[] 类型。

      此外,int(*)[] 类型的声明也是错误的。在 C++ 中,数组的声明应该是 std::array<T, N>,其中 T 是数组中的元素类型,N 是数组的长度。

      编译器不会报错,但可能会给出一些警告,因为它试图创建一个可能超出数组范围的指针。这是因为在 C++ 中,一个指针必须指向一个有效的内存地址,而 int(*)[] 可能会指向一个无效的内存地址。如果你试图访问一个 int(*)[] 的元素,编译器会告诉你这是不允许的。

    更多回答
    扫一扫访问手机版
    • 回到顶部
    • 回到顶部