| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2535 人关注过本帖
标题:函数中定义形参为指针型,传递的为数组名问题
只看楼主 加入收藏
zeko
Rank: 1
等 级:新手上路
帖 子:6
专家分:2
注 册:2011-5-24
结帖率:0
收藏
已结贴  问题点数:20 回复次数:3 
函数中定义形参为指针型,传递的为数组名问题
在定义函数传递的是指针类型的变量时发送的是元素首字节的地址
void f(int * p)
{
 }
int main(void)
 {   
    int i = 5;         
    f(&i);     
    return 0;
 }
就像这样的i占4个字节,传递的是首字节的地址,那如果定义的是一个数组呢
 void f(int * p)
{
 }
 int main(void)
 {   
     int a[5] = {1, 2, 3, 4, 5};   
     f(a);   
     return 0;
}
书上都说是传递的首元素的地址,那首元素也占4个字节,是不是也是传递的首字节的地址呢 求助
搜索更多相关主题的帖子: return 元素 
2011-08-13 16:19
lccwyj
Rank: 4
等 级:业余侠客
帖 子:71
专家分:203
注 册:2011-5-6
收藏
得分:7 
传递的是a[0]的地址
2011-08-13 16:21
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:7 
地址跟元素没有关系的。指针是地址,32位编程下就是4byte,不管它指向的元素是多少字节,都是4byte。C特殊处理数组,数组名就是数组地址,因此传int i的地址要写&i,但传输组a[]的地址只写a。很怪异,但C就是这样。

授人以渔,不授人以鱼。
2011-08-13 16:23
韩54521风
Rank: 4
等 级:业余侠客
帖 子:75
专家分:212
注 册:2011-6-11
收藏
得分:7 
传递的首字节的地址(也就是数组名)
数组名也是一个指针,指向数组第一个元素的地址,准确的说是一个指针常量,虽然与指针变量有区别,但是也是指针类型的啊!
 f(a); 传递的是a[0]的地址,也是一个指针类型。故你的理解正确
2011-08-16 10:17
快速回复:函数中定义形参为指针型,传递的为数组名问题
数据加载中...
 
   



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

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