char a[]="HELLO";
char *p="HELLO";
a[2]
和p[2]
会获取相同的字符吗?
答案 0 :(得分:3)
他们将获取的内容是一个字符大小的内存块,在每个内存开始之后或者每个var指向的内存中的地址之后,有2个字符大小的步骤(此处为2个字节)。这恰好是'L'我的例子,但这与内存中的地址不同。
所以是的,在给出的例子中,他们将获取相同的角色。
答案 1 :(得分:2)
是
p [2]相当于*(p + 2)
HELLO
^
*(p+2)
应该注意,第一个“HELLO”可能存储在可写存储页面中,而第二个“HELLO”可能存储在只读页面中。这与您所使用的编译器/平台密切相关。
答案 2 :(得分:2)
在这两种情况下,他们都会获取'L'
。但是,它不是'L'
。它们存储在不同的地方。这意味着如果你比较他们的指针,它们将是不相等的。
答案 3 :(得分:0)
两者都具有相同的字符值。
答案 4 :(得分:0)
我想这取决于您使用的编译器,但答案可能不是。
顺便说一下,你可以通过比较两个字符的地址来轻松测试。如果它们不同,则:否。
无论如何,你不应该依赖于此;)