gpt4 book ai didi

c - C 字符串中 ptr、ptr[0] 和 &ptr[0] 的区别

转载 作者:行者123 更新时间:2023-12-02 08:04:27 24 4
gpt4 key购买 nike

我一直在研究 C 中的字符串,并且在以下代码中遇到了以下问题:

#include <stdio.h>
int main()
{
char *p = "foo";
printf("%p\t%p\t%p",&p[0],p,p[0]);
return 0;

}

我有以下输出:

00403024        00403024        00000066
Process returned 0 (0x0) execution time : 0.057 s
Press any key to continue.

既然 p 指向字符串的第一个元素,p[0] 不应该指向与 p 相同的地址(因此,&p[0])吗?

最佳答案

p[0] 不是指针,它是 char

由于您在格式字符串中请求 %p,它会被强制转换为值为 0x00000066 的无效指针,这只是f,字符串中的第一个字符。

如果您打开编译器提供的所有警告,您可能会看到一个突出显示此转换及其潜在错误的警告。

pchar* 类型。 &p[0] 就像 &(*(p + 0)) 就是说你将它取消引用到 char,然后使用 & 将其变回指针。最终结果与原始结果相同。

关于c - C 字符串中 ptr、ptr[0] 和 &ptr[0] 的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53124904/

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