鱼cpython学习者 发表于 2021-8-2 10:09:00

字符串指针问题

代码:
#include <iostream>
using namespace std;
int main()
{
        char a;
        cout << "input: ";
        cin >> a;
       
        char *p = a;
       
        cout << p << endl;
        return 0;
}
问题:
数组名是数组第一个元素的地址,
如代码,a就是字符串第一个字符的地址。
那把a赋值给指针p,打印p,结果
input: aadafj
aadafj
打印了整个字符串,请问这是为什么?

大马强 发表于 2021-8-2 10:49:14

本帖最后由 大马强 于 2021-8-2 10:50 编辑

a的地址不是连续的吗,我觉得p获得了a的连续地址
用一个char接受就可以
char p =a ;

鱼cpython学习者 发表于 2021-8-2 11:10:41

大马强 发表于 2021-8-2 10:49
a的地址不是连续的吗,我觉得p获得了a的连续地址
用一个char接受就可以

但是当我获取指针指向的值时,的确时指向第一个字母啊
cout << *p << endl;
输出:
input: aadafj
a

人造人 发表于 2021-8-2 11:56:26

鱼cpython学习者 发表于 2021-8-2 11:10
但是当我获取指针指向的值时,的确时指向第一个字母啊

输出:

要输出一个字符,应该对变量 p 解引用
#include <iostream>
using namespace std;
int main()
{
    char a;
    cout << "input: ";
    cin >> a;

    char *p = a;

    //cout << p << endl;
    cout << *p << endl;
    return 0;
}

大马强 发表于 2021-8-2 11:59:02

本帖最后由 大马强 于 2021-8-2 12:03 编辑

https://static01.imgkr.com/temp/476a0070a63040bb8c9317dc50837608.jpg
#include <iostream>
using namespace std;
int main()
{
      char a;
      cout << "input: ";
      cin >> a;
      
      char *p ;
      // 这个与上面等价
      p =a;
      cout << p << endl; //打印全部
      cout<< a << endl; //打印全部
      cout << *p << endl; //打印一个
      cout<< *a << endl; //打印一个
      return 0;
}
*的作用取值,直接用地址读取的话,它可能会连续读取打印吧

万千只cnm 发表于 2021-8-2 12:15:01

对啊 你首地址不就输出整个字符串吗
p是指针
*p 是char
页: [1]
查看完整版本: 字符串指针问题