gpt4 book ai didi

c - 为什么这个声明不起作用

转载 作者:太空狗 更新时间:2023-10-29 14:55:28 26 4
gpt4 key购买 nike

int (*x)[10];x是一个指向10个int数组的指针

那么为什么这段代码不能编译:

int arr[3] ;

int (*p)[3] =arr;

但这行得通:

int  arr[3];

int (*p)[3] =&arr;

最佳答案

arr 是一个计算结果为 int* 的表达式(这是著名的“数组衰减到指针”特性)。

&arr 是一个计算结果为 int (*)[3] 的表达式。

数组名称“衰减”为指向所有表达式中数组第一个元素的指针,除非它们是 sizeof& 运算符的操作数。对于这两个操作,数组名称保留其“数组性”(C99 6.3.2.1/3“左值、数组和函数指示符”)。

关于c - 为什么这个声明不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7349971/

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