我正在学习 C ++ 中的指针,并且在 int *,double * 等方面做得很好,但后来我尝试了一些我无法理解的东西。
char word[] = "Hello there";
cout << word << endl; //Hello there
cout << *word << endl; //H
cout << &word << endl; //Address
char *wordpt = word;
cout << wordpt << endl; //Hello there
cout << *wordpt << endl; //H
cout << &wordpt << endl; //Address
wordpt = &word[0];
cout << wordpt << endl; //Hello there
cout << *wordpt << endl; //H
cout << &wordpt << endl; //Address
这些是怎么回事?我什至不明白contents of word
(*word
)可以是单个索引。word
如何存储在内存中?为什么wordpt
允许我给它一个值word
,这不是一个地址?
指针wordpt
在第一种情况下指向数组word
的第一个元素,第二个赋值是完全相同的,但明确。
数组会自动转换为指向其第一个元素的指针,如 c 标准所指定,这也适用于 c ++。
让您感到困惑的是,cout
自动打印char *
指针的内容而不是指针指向的地址,为此有一个要求,指向的数据必须是一个 c 字符串,即一个非nul
字节的序列,后跟一个nul
字节,这是存储在word
中的字节。
所以cout
正在访问由wordpt
指针指向的数据。
本站系公益性非盈利分享网址,本文来自用户投稿,不代表边看边学立场,如若转载,请注明出处
评论列表(17条)