指针p跟*p的区别

chuang0326 2011-11-27 09:57:02
代码如下:
#include <iostream.h>
void invert(char *a,int x,int y){
char t,*p, *q;
p=a+x;
cout<<"p的值为:"<<p<<endl;
q=a+y;
while(p<q){
t=*p;
*p=*q;
*q=t;
p++;
q--;

}

}
void main(){
char dt[13]="GoodBookNice";
int i=0;
int n=1;

while(i<8) {
invert(dt,i,i+5);
cout<<"第"<<n++<<"次计算:"<<endl;
for(int j=i;j<=i+5;j++)
cout<<dt[j]<<","<<endl;
i+=6;
}
}

问题如下:不是说,p指向地址,*p指向内容么?为何我前面cout出p的值是为数组dt的值,而不是dt的地址呢?
而我尚未给*p赋值,但是我cout<<*p<<endl;的值,却是可以cout出dt的首个字母G。
请各位有能力的大哥帮忙解决一下,不胜感激。
...全文
346 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
追求执着 2011-11-30
  • 打赏
  • 举报
回复
Karl_S 2011-11-30
  • 打赏
  • 举报
回复
这个是对字符串的特殊照顾,为了方便起见!!!
如果要知道地址的话,可以写为

cout<<&p<<endl;
蔡鸟 2011-11-27
  • 打赏
  • 举报
回复
指针看做一个变量,存放的是目标变量的地址。int *p,也就是说指针本身需要一个空间存放指针变量。so,lz的第二个就是指针的指针。。。不知道听得懂不?
wumuzi 2011-11-27
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 fangwansheng 的回复:]
cout<<p实际上是这样的cout.operator<<(p),cout是iostream流的一种对象,当p是字符串指针时,会将其转为字符串名处理,输出那个字符串
[/Quote]
楼上正解,当p指向字符串时cout<<p才会正确输出'\0'结尾的字符串。指向别的类型则不能。另外提醒一下,char a[] = {'1','2'};cout << a << endl;输出12后面会跟乱码,因为没有结束符'\0'
小方fws 2011-11-27
  • 打赏
  • 举报
回复
cout<<p实际上是这样的cout.operator<<(p),cout是iostream流的一种对象,当p是字符串指针时,会将其转为字符串名处理,输出那个字符串
树无影 2011-11-27
  • 打赏
  • 举报
回复
p是你指向对象的地址,*p就是你指向对象的值。
例: int n= 3; int *p = &n;
p的值就是&n, *p的值就是3

fukang258369 2011-11-27
  • 打赏
  • 举报
回复
[Quote=引用楼主 chuang0326 的回复:]
代码如下:
#include <iostream.h>
void invert(char *a,int x,int y){
char t,*p, *q;
p=a+x;
cout<<"p的值为:"<<p<<endl;//这里可以改为cout<<"p的值为:"<<(int)p<<endl;
q=a+y;
while(p<q){
t=*p;
*p=*q;
*q=t;
p++;
q--;

}

}
void main(){
char dt……
[/Quote]p指向了字符数组,输出操作符应该是被重载了,可以输出字符数组,如果p指向int数组,cout<<p;就输出p的值。有两种方式访问数组,一种就是dt[i],还有就是*(p+i);
小方fws 2011-11-27
  • 打赏
  • 举报
回复
p实际上是指针变量,这个变量里存放的是地址值,*p就是这个地址值当中的数据

至于cout<<p<<endl打印出来什么值,你可以去看看cout<<是怎么操作的就明白呢
bdmh 2011-11-27
  • 打赏
  • 举报
回复
p指针,*p是对p的解引用,表示p处的值

64,683

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧