字符串常量初始化指针

  • 2019 年 10 月 3 日
  • 筆記

今天写个小文说一说字符串地址和字符串常量。

在C/C++中,一个字符串常量表示的是该字符串第一个元素的地址,就跟char指针名,char数组名表示的是字符串第一个元素的地址一样。

想要打印一个地址,用一个简单的 cout << 地址; 语句就可以搞定;

但是下面这两条语句将打印整个字符串

char a[20] = "1234";  cout << a << endl;    char *p = a;  cout << p << endl;

这也是字符数组 与其他数组不同的一个地方,那么该如何得到该字符串的地址呢?

下面有两种方法可供参考

cout << (int*)a << endl;  cout << &a << endl;

这两种方法都可以正确打印出“字符串的地址”,但是有细微区别之处

在字符数组a中,a表示第一个字符的地址,a+1表示第二个字符的地址;

在第一条打印地址的语句中,(int*)a只是起到了一个强制类型转换的作用,换句话说,a表示第一个字符的地址,但是cout <<a;输出的是整个字符串,这是因为这个地址是char*类型的,cout识别到char*类型的地址将会自动打印从该地址指向的空间开始直到遇到’