gpt4 book ai didi

c - 为什么指向数组的指针的 %d 给我数组的第一个元素?

转载 作者:太空狗 更新时间:2023-10-29 15:42:39 26 4
gpt4 key购买 nike

有人可以向我解释为什么这段代码总是返回数组的第一个元素吗? (本例中为 7):

int a[] = {7,1,3};
printf("%d", *a);

最佳答案

首先,让我告诉你,这里没有指向数组的指针,你只有一个数组变量,并应用了解引用运算符。

数组,(在许多其他情况下)当用作 * 运算符的操作数时,衰减到指向数组第一个元素的指针 < strong>注意。所以

 printf("%d", *a);

相同
 printf("%d", *(&(a[0]));

之后,根据printf()的要求,

  • 您有一个 %d 转换说明符
  • 你有一个int类型的参数>

因此,它会正确打印值。


注意:

引用 C11,章节 §6.3.2.1,左值、数组和函数指示符,(强调我的)

Except when it is the operand of the sizeof operator, the _Alignof operator, or the unary & operator, or is a string literal used to initialize an array, an expression that has type ‘‘array of type’’ is converted to an expression with type ‘‘pointer to type’’ that points to the initial element of the array object and is not an lvalue. [...]

关于c - 为什么指向数组的指针的 %d 给我数组的第一个元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43517422/

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