![](https://iknow-base.cdn.bcebos.com/lxb/notice.png)
c++指针指向小问题
#include<iostream>usingnamespacestd;intmain(){chara[]="hello";char*p=a;cout<<p;return...
#include<iostream>
using namespace std;
int main()
{
char a[]="hello";
char* p=a;
cout<<p;
return 0;
}
p不是指向字符数组的首地址吗?怎么p输出是hello? 展开
using namespace std;
int main()
{
char a[]="hello";
char* p=a;
cout<<p;
return 0;
}
p不是指向字符数组的首地址吗?怎么p输出是hello? 展开
4个回答
展开全部
C++里为了省去我们循环输出字符的麻烦,cout<<p<<endl;被翻译为输出p指向的字符串值。
这个时候要输出p的指针值就只能先将其转为void *再输出。因为void型, cout没法输出,只能乖乖输出指针
这个时候要输出p的指针值就只能先将其转为void *再输出。因为void型, cout没法输出,只能乖乖输出指针
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
![](https://ecmc.bdimg.com/public03/b4cb859ca634443212c22993b0c87088.png)
2024-08-21 广告
在C++编程中,我们常利用类的封装、继承与多态性来构建高效、可维护的程序。例如,设计一个`Student`类,包含姓名、年龄和成绩作为成员变量,并定义成员函数来设置和获取这些值。通过构造函数初始化对象,使用成员函数实现对学生信息的操作。C+...
点击进入详情页
本回答由MarsCode提供
展开全部
是的,你是输出了一个地址,一整个字符串的地址。
如果想输出字符数组的首地址,应该cout<<*p;
输出第二个字符数组,应该cout<<*p(1);
如此类推
还有,你应该记住数组和指针几乎是相通的,但指针更强大。
如果想输出字符数组的首地址,应该cout<<*p;
输出第二个字符数组,应该cout<<*p(1);
如此类推
还有,你应该记住数组和指针几乎是相通的,但指针更强大。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
当cout<<检测到p是一个字符串的首元素地址时,它就从地址p开始一个字符一个字符地依次输出,直到碰到字符串结束符'\0'为止。这是赋于C的输出控制符"%s"和C++的输出流cout <<的输出方式和书写语法……。C/C++操作字串都只要首地址信息。
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你的指针指向了字符数组 a 如果你想输出第一个字符 cout<<*p 这样就是输出 h 而不会输出hello
追问
我指向不是一个地址么?怎么把hello全输出来了?
追答
但是你输出的值这个字符数组的所有地址,并不是首地址 虽然你指向的值首地址
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询