Char *指针和char []

时间:2015-03-05 00:42:24

标签: c++ pointers

我正在研究用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的值,这不是一个地址?

1 个答案:

答案 0 :(得分:1)

第一种情况下的指针wordpt指向数组word的第一个元素,第二个赋值完全相同但显式。

数组自动转换为指向第一个元素的指针,如c标准所指定的那样,也适用于c ++。

令你感到困惑的是cout自动打印char *指针的内容而不是指针指向的地址,这样做是有要求的,指向的数据必须是一个ac字符串,即一个非nul字节序列,后跟一个nul字节,存储在word中。

因此cout正在访问wordpt指针指向的数据。