| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 431 人关注过本帖
标题:高手看看哦 求解释
只看楼主 加入收藏
露营地
Rank: 2
来 自:湛江
等 级:论坛游民
帖 子:150
专家分:23
注 册:2015-6-27
结帖率:92.86%
收藏
已结贴  问题点数:10 回复次数:6 
高手看看哦 求解释
int a[3][3]={1,2,3,4,5,6,7,8,9};
int *pa[3]={a[0],a[1],a[2]};
int *p=a[0];
main(){
int i;
for(i=0;i<3;i++)
printf("%d,%d,%d\n",a[i][2-i],*a[i],*(*(a+i)+i));
for(i=0;i<3;i++)
printf("%d,%d,%d\n",*pa[i],p[i],*(p+i));
}




其中*a[i]表示i行0列元素值;*(*(a+i)+i)表示i行i列的元素值;



为什么a前面可以用*符号,   它不是数组么???

求解释 高手
2015-08-03 12:17
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:2 
既然你知道a[i]是一个数组,那么*(a[i])是什么?

授人以渔,不授人以鱼。
2015-08-03 12:29
kenierlee
Rank: 6Rank: 6
等 级:侠之大者
威 望:3
帖 子:58
专家分:474
注 册:2015-7-28
收藏
得分:3 
*优先级比[]低,所以*a[i],实际上是*(a[i])
2015-08-03 13:01
sunbeam_
Rank: 3Rank: 3
来 自:我家
等 级:论坛游侠
威 望:1
帖 子:31
专家分:113
注 册:2015-8-2
收藏
得分:2 
数组名就是它的首元素的地址
你可以把它当指针一样用

爱好计算机的电气学渣
2015-08-03 13:02
露营地
Rank: 2
来 自:湛江
等 级:论坛游民
帖 子:150
专家分:23
注 册:2015-6-27
收藏
得分:0 
回复 2楼 TonyDeng
第1行第一列的元素???

不要不要的。。。
2015-08-03 16:15
列车永不停息
Rank: 2
等 级:论坛游民
帖 子:76
专家分:48
注 册:2015-7-31
收藏
得分:3 
如果a是一维数组,你可以认为*(a+i)是实际元素的值,但a是二维数组,你可以把二维数组当做一维数组,其中的每个元素又是一个数组.*(a+i)表示的是第i行首元素的地址.也就是a[i][0]的地址,自然*(a+i)+j表示a[i][0]后j个位置的地址.*(*(a+i)+j)也就表示为a[i][j]的值了.
2015-08-03 16:38
列车永不停息
Rank: 2
等 级:论坛游民
帖 子:76
专家分:48
注 册:2015-7-31
收藏
得分:0 
回复 2楼 TonyDeng
二位数组a[i]表示第i行的第一个地址。*a[i]表示第i行的第一个的值。这里理解对吗?
2015-08-03 16:42
快速回复:高手看看哦 求解释
数据加载中...
 
   



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

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