字符串常量初始化指针
- 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*类型的地址将会自动打印从该地址指向的空间开始直到遇到’