字符串指针问题
代码:#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:50 编辑
a的地址不是连续的吗,我觉得p获得了a的连续地址
用一个char接受就可以
char p =a ; 大马强 发表于 2021-8-2 10:49
a的地址不是连续的吗,我觉得p获得了a的连续地址
用一个char接受就可以
但是当我获取指针指向的值时,的确时指向第一个字母啊
cout << *p << endl;
输出:
input: aadafj
a 鱼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 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;
}
*的作用取值,直接用地址读取的话,它可能会连续读取打印吧 对啊 你首地址不就输出整个字符串吗
p是指针
*p 是char
页:
[1]