我觉得这是个很简单的问题..。我试着找出具体的细节,但是找不到。代码:
#include <iostream>
using namespace std;
int main() {
char * veggie_burger = "delicious";
cout<<endl<<veggie_burger<<endl;
for (int count = 0; count < 9; count++){
cout<<veggie_burger[count]
<<" @: "
<<&veggie_burger[count]
<<endl;
}
cout<<&veggie_burger;
return 0;
}这将输出
美味
D@美味
E@ elicious
L@l
我很好
C@
I@ ious
O@ ous
U@ us
S@s
001DF7D4 (或任何地方)]
&veggie_burger[n]和&veggie_burger到底有什么区别?指针不应该指向内存中&veggie_burger[3]存储'l‘而不是在'l’处开始字符序列的位置吗?
发布于 2011-07-16 03:10:05
veggie_burger[n]与*(veggie_burger+n)完全相同,因此&veggie_burger[n]的意思是veggie_burger + n,或指向nth字符的指针。它具有char*类型,因为它是字符的地址。
另一方面,&veggie_burger是指针的地址。它有char **类型。
发布于 2011-07-16 03:04:25
在这种情况下,&veggie_burger是char **类型的,它有指针的地址。换句话说,指针在内存中的位置。
&veggie_burger[n]是数组的第n个成员的地址。不是它的价值。
不要将指针与数组混淆。例如:
char veggie_burger[] = "delicious";这是一个数组,veggie_burger == &veggie_burger == &veggie_burger[0]
发布于 2011-07-16 03:21:26
首先,
char * veggie_burger = "delicious";是个坏主意,最不可取;相反地使用:
const char * veggie_burger = "delicious";&veggie_burger只是veggie_burger的一个地址;它与它指出的字符串文本无关。
&veggie_burger[n]有两个部分,第一部分是veggie_burger[n];它被计算为字符串文本的nth元素。第二个是&<element>,它意味着nth元素的地址。
话虽如此,&veggie_burger[3]将地址存储在字母l上。i.e
&veggie_burger[3] ==> (veggie_burger + 3)https://stackoverflow.com/questions/6714995
复制相似问题