gpt4 book ai didi

c - `*"空间 farers 的地址”`指针

转载 作者:太空宇宙 更新时间:2023-11-04 05:11:51 25 4
gpt4 key购买 nike

我正在学习《C Primer Plus》,遇到如下代码:

//strptr.c -- strings are pointers
#include <stdio.h>
int main(void)
{
printf("%s, %p, %c\n", "We", "are", *"space farers");

return 0;
}

运行它并通过:

./a.out
We, 0x1066e4fa1, s

引用*"space farers",书中解释说:

*"space farers" should produce the value to which the address points, which should be the first character of the string "space farers".

这是否意味着 *"space farers" 是一个地址?
head 中没有声明指针?

最佳答案

在大多数情况下,类型为“T 的 N 元素数组”的表达式将被转换(“衰减”)为类型为“指向T 的指针”的表达式,并且表达式的值将是数组第一个元素的地址。当数组表达式是 sizeof 的操作数时发生异常或一元 &运算符,或者是用于在声明中初始化字符数组的字符串文字。

因此,对于任何数组

T arr[N];

表达式arr将“衰减”为“指向 T 的指针”,并且该值将与 &arr[0] 相同.

表达式 "space farers"类型为“char 的 13 元素数组”。因为它不是 sizeof 的操作数或一元 &运算符,并且它不用于在声明中初始化字符数组,它“衰减”为类型为 char * 的表达式,表达式的值是数组第一个元素的地址。正如*arr相当于arr[0] , *"space farers"相当于"space farers"[0] , 并为我们提供存储在数组第一个元素中的 - 字符值 's' .

关于c - `*"空间 farers 的地址”`指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52839067/

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