| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 476 人关注过本帖
标题:[求助]请教一个关于指针的问题
只看楼主 加入收藏
chf710
Rank: 1
等 级:新手上路
帖 子:9
专家分:0
注 册:2006-11-3
收藏
 问题点数:0 回复次数:4 
[求助]请教一个关于指针的问题

int main( )
{ int a[2][3]={11,15,19,21,25,29};
int *p;
p=a[0];
cout<<"a="<<a<<endl
<<"a[0]="<<a[0]<<endl
<<"p="<<p<<endl
<<"*a="<<*a<<endl
<<"*a[0]="<<*a[0]<<endl
<<"*p="<<*p<<endl
return 0;}

执行上面这段代码,结果为:

a=0012FF68
a[0]=0012FF68
p=0012FF68
*a=0012FF68
*a[0]=11
*p=11

如上所示,a 既然是数组的首地址,那么 *a 就应该是对数组a首地址的取值,即 *a应该是11,可为什么结果中*a还是数组a的首地址?

搜索更多相关主题的帖子: 指针 
2007-04-17 21:32
游乐园
Rank: 3Rank: 3
等 级:新手上路
威 望:6
帖 子:671
专家分:0
注 册:2006-11-1
收藏
得分:0 

把a相象成一个一维数组 包含2个元素 a[0],a[1],而每个元素a[n]自身又包含3个元素

p=a[0]; //是把这个数组的地址赋给p

*p或者*a[0] 就是a[0]中的第一个元素值 .*p+1 是a[0]数组中第二个元素的值 ...

*(p+1) 就是a[1]中的第一个元素的值

你的疑问是 *a 是怎么回事 ,因为a是个包含着数组元素的数组,所以本身不是一个单独的整形的值 ,而是一个数组 所以*a 是地址 也就是首地址

就是说 a是指向这个大的一维数组的地址 而*a 是指向这个大的一位数组中第一个元素(因为是数组)的地址


unicorn-h.spaces. ◇◆ sava-scratch.spaces.
2007-04-17 22:08
yuyunliuhen
Rank: 6Rank: 6
等 级:贵宾
威 望:20
帖 子:1435
专家分:0
注 册:2005-12-12
收藏
得分:0 

#include<iostream>
using namespace std;
int main( )
{ int a[2][3]={11,15,19,21,25,29};
int *p;
p=a[0];
cout<<"a="<<a<<endl
<<"a[0]="<<a[0]<<endl
<<"p="<<p<<endl
<<"**a="<<**a<<endl
<<"*a="<<*a<<endl
<<"*a[0]="<<*a[0]<<endl
<<"*p="<<*p<<endl;
cout<<typeid(*a).name()<<endl; //查看*a的类型,下同
cout<<typeid(**a).name()<<endl;
cout<<typeid(a).name()<<endl;
return 0;
}

可以看到*a 的类型是 int *,**a 才是int.也就是说**a的值才是11.


Go confidently in the  directions of your dreams,live the life you have imagined!Just do it!
It is no use learning without thinking!
2007-04-17 22:19
yuyunliuhen
Rank: 6Rank: 6
等 级:贵宾
威 望:20
帖 子:1435
专家分:0
注 册:2005-12-12
收藏
得分:0 
还是二楼的比较容易理解

Go confidently in the  directions of your dreams,live the life you have imagined!Just do it!
It is no use learning without thinking!
2007-04-17 22:28
aipb2007
Rank: 8Rank: 8
来 自:CQU
等 级:贵宾
威 望:40
帖 子:2879
专家分:7
注 册:2007-3-18
收藏
得分:0 

记住一点就行了,2维数组实际上是不存在的,所谓2维数组就是数组的数组!

所以a[3][4];

int (*p)[4] = a;


Fight  to win  or  die...
2007-04-17 23:22
快速回复:[求助]请教一个关于指针的问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.016260 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved