请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

数组和指针的关系

pStr2是数组的首地址吗,为什么单纯输出pStr2的话,没有出现十六进制的那个地址呀,老师我的指针的基础有点薄弱,可能问的一些问题比较傻。。。

正在回答

3回答

输出什么要看你怎么解析,你在调试的输出窗口一般可以直接看到地址。指针比较难,但属于CC++重点,把视频反复多看几遍,多动手应该会感觉好很多。

0 回复 有任何疑惑可以回复我~
  • 提问者 盐水泡凤梨 #1
    如果是整形变量的话,假如int* pA=&xxx;输出pA的话,是输出的xxx的地址吧,但如果是字符数组,输出的为什么就是整个数组内容了呢
    回复 有任何疑惑可以回复我~ 2020-08-06 18:58:50
  • quickzhao 回复 提问者 盐水泡凤梨 #2
    请使用代码表达问题,否则会有歧义。
    回复 有任何疑惑可以回复我~ 2020-08-06 19:15:31
电力皮卡 2020-12-22 22:41:40

在输出的时候,会把字符数组转换为字符指针的形式输出,这样其实和其他类型的指针输出是一样的,就可以解释这个问题了。可以看一下cout的构造函数。我理解的比较片面,不知道能否给您带来些参考。

0 回复 有任何疑惑可以回复我~
提问者 盐水泡凤梨 2020-08-06 19:04:42

https://img1.sycdn.imooc.com//szimg/5f2be3b809412df308050378.jpg就像这个样子

0 回复 有任何疑惑可以回复我~
  • 提问者 盐水泡凤梨 #1
    #include<bits/stdc++.h>
    using namespace std;
    int main()
    {
    	int* pA=NULL;
    	int a=10;
    	pA=&a;
    	cout<<pA<<endl;//整型 
    	char b[]={"hello"};
    	char* pB=NULL;
    	pB=b;
    	cout<<pB<<endl;//字符数组 
    	return 0; 
    }
    
    输出内容是  0x71fe0c
                       hello
    回复 有任何疑惑可以回复我~ 2020-08-06 19:04:59
  • quickzhao 回复 提问者 盐水泡凤梨 #2
    因为你用cout输出,cout很智能。它会尝试用最合适的方式呈现信息。指针显示地址这很正常,而c中字符数组其实就是首地址和一些附加信息,而cout可以正确的解析并显示出来。
    回复 有任何疑惑可以回复我~ 2020-08-06 19:24:06
  • 提问者 盐水泡凤梨 回复 quickzhao #3
    谢谢老师!
    回复 有任何疑惑可以回复我~ 2020-08-06 23:15:03
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信