gpt4 book ai didi

c - 带地址运算符的 printf 字符串文字

转载 作者:行者123 更新时间:2023-11-30 18:20:32 24 4
gpt4 key购买 nike

#include<stdio.h>

int main()
{
printf("%s\n", "Hello");
printf("%s\n", &"Hello");
return 0;
}

Output :
Hello
Hello

谁能向我解释为什么 "Hello"&"Hello" 产生相同的结果?

最佳答案

& 应用于“Hello”会产生一个指向该数组的指针(是的,它是一个数组,并且在此上下文中它不会衰减为指针)。

它仍然指向相同的位置,但它具有不同的类型(它具有char (*)[6],即指向 6 个字符数组的指针)。 printf 忽略指针的实际类型并将其视为 char *,因此它“有效”。

<小时/>

从技术上讲,对 printf 说明符使用“错误”的对象类型是未定义的行为。打开警告应该会在现代编译器中指出这一点。

关于c - 带地址运算符的 printf 字符串文字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19119198/

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