| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1151 人关注过本帖
标题:关于指针和数组的问题
只看楼主 加入收藏
蹴鞠者
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:82
专家分:134
注 册:2016-9-26
结帖率:75%
收藏
已结贴  问题点数:5 回复次数:5 
关于指针和数组的问题
书上说:在定义指针变量时可以如下赋初值:int *p = &a[0];
那么问题来了:p里面存的是地址,*p表示的是地址里面的内容,&a[0]表示的是地址,那么为什么可以像上面那么赋初值呢?
2016-10-12 17:54
ehszt
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:40
帖 子:1745
专家分:3216
注 册:2015-12-2
收藏
得分:1 
以上等效为
int *p;
p=&a[0];
c允许在定义变量时对其初始化,以上不等价为:
int *p;
*p=&a[0];//与int *p=&a[0];不等效。
2016-10-12 18:11
worldlc
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:44
专家分:117
注 册:2016-10-13
收藏
得分:1 
回复 楼主 蹴鞠者
a[0]本身就代表一个地址。  &a[0]应该是取里面的值。   比如scanf("%d",a[0]);  而不是scanf("%d",&a[0]);
2016-10-13 19:48
word123
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:13
帖 子:333
专家分:1622
注 册:2014-4-5
收藏
得分:1 
回复 3楼 worldlc
我怎么感觉你说的全是反的呢
2016-10-13 22:29
苡木之心
Rank: 1
等 级:新手上路
帖 子:7
专家分:6
注 册:2016-5-12
收藏
得分:1 
int *p=&a[0];
*p是指针,&a[0]是取地址,这里因为是直接定义,所以在指向地址的时候*依然存在,就是把p指向a[0]。
2016-10-14 10:44
lautition
Rank: 2
等 级:论坛游民
威 望:1
帖 子:24
专家分:21
注 册:2016-3-16
收藏
得分:1 
如果不明白 最好是自己验证
void main()
{
   int a[5]={4,3,2,1,0};
   int *p=&a[0];
   printf("%d,%0x",*p,&a[0]);
   printf("\n%0x,%d",p,a[0]);


   getchar();
}
2016-10-14 11:18
快速回复:关于指针和数组的问题
数据加载中...
 
   



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

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