如何获取指向字符数组中第一个字符的常量指针

How can you get a constant pointer to the first char in a character array?

本文关键字:字符 第一个 常量 指针 数组 何获 取指      更新时间:2023-10-16

在下面的程序中,存储的字符串使用cin更改,从而更改地址。字符串的第一个元素的地址由 s 表示。第一个元素的地址是字符串本身。因此,当输入新字符串时,它发生了变化。当我尝试输出&s[0]cout时,它会给出整个字符串。

#include<iostream>
using namespace std;
int main() {
    char s[6];
    cin >> s;   // say abcde
    cout << s ; 
    cout << &s[0] ; // gives abcde
    cin >> s;   // say stack 
    cout << s;  
    cout << &s[0] ; gives stack
}

地址没有变化,存储在地址上的数据正在改变。打印整个字符串的原因是因为你传递了一个指向cout指针,并且可以通过提供指向第一项的指针将数组传递给函数(或流)。传递指向第一个字符的指针类似于传递 C 样式字符串。如果要打印第一个字符的地址,则需要将指针转换为void*cout<<(void*)&s[0](这将打印第一个字符的地址)。