函数中为什么可以用数组名作为参数,例如:char *string(char a[ ],char b[ ])

[复制链接]
查看11 | 回复5 | 2011-10-25 13:23:14 | 显示全部楼层 |阅读模式
数组名不是常量。举个例子,有个函数:fun(){char a[10];...}这个函数里的数组a是临时变量,所以每次调用fun的时候a的地址都可能不一样。传递数组的时候,就是传递地址,数组名就是数组首个元素的地址。数组就是为了方便计算某个基址下一系列数据的便宜而设计的。不存在什么地址常量一说。只有全局变量的地址可以是部分常量。之所以说部分,是因为有些程序的整个位置需要在运行以后才能确定,例如动态链接库里的。...
回复

使用道具 举报

千问 | 2011-10-25 13:23:14 | 显示全部楼层
根据第62\63页说法在接受数组的函数中, 定义数组形式参数的方法有3种,指针,定尺寸数组,无尺寸数组........三种方法产生相同效果,因为每种方法都把准备接受整数数组的要求通知编译程序(前面是有几个例子)....编译后,程序照样能正常工作,因为C编译程序产生的代码就是令func1()接受指针,并不生成32元素的数...
回复

使用道具 举报

千问 | 2011-10-25 13:23:14 | 显示全部楼层
数组名就是数组的指针,跟用指针是一样的!@...
回复

使用道具 举报

千问 | 2011-10-25 13:23:14 | 显示全部楼层
传递的时候用数组名跟用指针是等效的...
回复

使用道具 举报

千问 | 2011-10-25 13:23:14 | 显示全部楼层
采用值传递~~~...
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行