C ++指针和数组基础知识

时间:2015-02-14 06:08:47

标签: c++ arrays pointers

代码:

#include <iostream>
using namespace std;

int main(int argc, const char * argv[]) {
    char testChar[] = {'a','b','c'};
    char *testPointer = testChar ;
    cout << testPointer << endl;
    return 0;
}

问题:

当我使用cout << mypointer时,

  1. 为什么要打印数组的每个字母和混乱(参考 输出)到底?我的假设是当我看到指针时 指向第一个字母打印然后第二个然后等等 最后打印出来的东西。
  2. 最后是什么乱七八糟(参考输出),地址?
  3. 评论:

    • 我知道数组末尾有一个空指针吗?
    • 一年前我学会了这个,忘了请帮我回忆一下发生了什么。

    输出:

    abc 310 367 277_ 377   
    Program ended with exit code: 0
    

2 个答案:

答案 0 :(得分:4)

当打印出一个字符串(或你的情况下为char数组)时,它必须以空字符\0终止,否则cout将继续打印出位于内存中的字符超过预期的字符串直到它遇到一个空字符,或者它访问内存时,不允许从中读取导致分段错误。

那&#34;混乱&#34;在正在打印的末尾是位于char数组之后的内存位置中的值。

答案 1 :(得分:0)

同样在初始化char testChar[] = "abc";之后,你实际上不需要'char * testPointer = testChar'语句,因为testChar本身就是数组第一个元素的地址。所以cout << testChar << endl;会这样做。