gpt4 book ai didi

c - 为什么 int (*j)[2] = my_array 给出警告?

转载 作者:太空狗 更新时间:2023-10-29 15:28:59 24 4
gpt4 key购买 nike

代码如下:

int my_array[] = {1, 2};
int (*j)[2] = my_array;

编译器说:“警告:从不兼容的指针类型初始化 [默认启用]”

如果我用下面的语句替换第二个语句,它编译成功:

int (*j)[2] = &my_array;

我无法理解这两个语句之间的区别,因为 my_array&my_array 保存数组中第一个元素的地址。

最佳答案

永远记住下面的 C 语言数组规则

Array of type T 将在除 & 之外的大多数表达式中转换为 pointer to type T >sizeof 运算符。

int my_array[] = {1, 2};
int (*j)[2] = my_array;

在上述情况下,my_array 被隐式转换为 pointer to int(来自 array of int)。

int (*j)[2] = &my_array;

在这里,由于涉及 & 运算符,它不会让作为 int 数组 的 'my_array' 转换为 pointer to int 并返回 指向与 LHS 类型匹配的 int 数组的指针

关于c - 为什么 int (*j)[2] = my_array 给出警告?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27438023/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com