有如下代码:

int main()
{
    char *s;
    s = "hello";

    cout << *s << endl;
    cout << s << endl;

    return 0;
}

//OUTPUT:
//h
//hello

首先定义了一个指针,然后给指针赋值为一个字符串。看起来以上写法有错误,s 指针是一个地址,为什么给它赋值一个字符串?

因为在 c++ 中字符串类似于我们提到的数组,使用数组名就表示第一个数组元素的地址。例如:

int main()
{
    int arr[] = {1, 3};
    int *p = arr;

    cout << *p << endl;
    cout << *(p+1) << endl;

    return 0;
}

//OUTPUT:
//1
//3

同样在字符串中,s = "hello" 表示将首字母 h 的地址赋给指针。

标签: none

添加新评论