gpt4 book ai didi

c - &"string"与 "string"是同一地址吗?

转载 作者:行者123 更新时间:2023-12-02 20:29:25 25 4
gpt4 key购买 nike

我生成了一些如下所示的 C 代码:

char *example[] = {&" ",&"\n", &"\t"};

如果我自己写这个,我会删除与号 (&),因为字符串文字已经是 char * 类型。对我来说,它看起来像是 example 应该 已生成并声明为 char**[]

我能否确定有或没有 & 的指针是相同的?这是获取 C 中明确定义的地址的地址吗?

编辑:我正在调查一些当前处于生命周期中不接受任何更改的软件的警告。 printf("%p", &"hello world"); 是否始终与 printf("%p", "hello world"); 相同,或者是这样依赖于编译器?

最佳答案

Is &“string” the same address as “string”?

不,他们的类型不同。

 "hello world"

对象的类型为char [12]。至于表达式上下文中的其他数组,则转换为 char *

但是:

 &"hello world" 

具有类型char (*)[12]

所以在你的例子中,它也意味着:

char *example[] = {&" ",&"\n", &"\t"};

是一个无效声明,因为初始化列表中的数组元素不是 char * 类型。

这是正确的声明:

char *example[] = {" ", "\n", "\t"};

对于这个问题,如果您必须使用&,以下是正确的声明:

char (*example[3])[] = {&" ",&"\n", &"\t"};

关于c - &"string"与 "string"是同一地址吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24875925/

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