gpt4 book ai didi

c - 为什么那些打印相同的结果?

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

给定一个声明:

char message[] = "hello, world"

为什么它们打印出相同的结果?

printf ( "%s", message );
printf ( "%s", &message[0] );

据我所知,%s只读取字符串的首地址。 char message[]也被声明为指向char字符串的指针(char *message),而message只读为字符串的首地址字符串。然而,对于 message[0],也被读作 *(message + 0) 我是否正确认为它是这样的?

&message[0] = &*(message + 0) = &*message = 消息

最佳答案

当作为参数传递给函数时,数组名称转换为指向第一个元素的指针。
消息 衰减为指向第一个元素的指针。它在衰减后具有 char * 类型。 &message[0] 是第一个元素的地址。它也是 char * 类型。

&message[0] 等同于

&(*(message + 0) ) =  &(*(message)) = &*(message) = message  

&* 相互抵消了效果。

关于c - 为什么那些打印相同的结果?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24634389/

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