| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 389 人关注过本帖
标题:有关函数调用数组的问题
只看楼主 加入收藏
houstonlee89
Rank: 1
来 自:辽宁盘锦
等 级:新手上路
帖 子:14
专家分:6
注 册:2011-2-4
结帖率:0
收藏
已结贴  问题点数:10 回复次数:3 
有关函数调用数组的问题
书上分了三种情况,一种是数组元素做实参 一种是数组名做实参,一种是数组元素地址做实参,第一种还行,但是第二种第三种不太明白其间的区别和联系,想请教明白的人给讲讲。
搜索更多相关主题的帖子: 元素 
2011-08-29 16:49
cosam
Rank: 4
等 级:业余侠客
帖 子:146
专家分:259
注 册:2011-8-25
收藏
得分:5 
不太懂你的意思,只能稍为说一下。

对数组名的操作,多数都是对指针的操作,数组的数组名代表的就是 数组的第一个地址(你可以尝试输出数组名的地址和第一个元素的地址比较),后面的元素地址就是数组名的地址加1;
用数组地址当实参是从内存根本上去处理数组的问题(对内存的操作),跟第二种方法是一样的.
第一种对元素做实参,只是从表面去处理数组的问题,当不同的涵数调用的时候,往往发挥不了作用,一般只能用指针来处理。


2011-08-29 17:05
luyi_footman
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:32
专家分:100
注 册:2011-7-14
收藏
得分:5 
数组名做实参与数组元素地址做实参,对于编译器来说都是一样的,编译器都把两者当做一个普通的指针。但是,数组名和
数组元素地址分别做实参时,两者有一个很大的区别,数组名做实参时,调用这个数组名的函数不能对该数组名进行++或是
--操作,而数组元素地址可以。记住,数组名经常被人们认为是一个指针,但是它不完全是一个指针(完全是指针的情况只是
在该数组名被当做参数传递时才被编译器当做指针来处理),这个指针(数组名)的值(不是它指向的值)不能被改变,而一般
的指针可以。

天道酬勤!
2011-08-29 19:55
houstonlee89
Rank: 1
来 自:辽宁盘锦
等 级:新手上路
帖 子:14
专家分:6
注 册:2011-2-4
收藏
得分:0 
看了您说的,加深了理解。今天大概又看了一遍这方面的内容,给我的感觉就是 如果调用数组名作实参,就只能从数组第一个元素开始使用数组,如果调用数组元素地址作实参,就可以从被调用的数组中任意的一个元素开始使用数组,这么理解对吗,还有像问一下,如果定义int *p a[] 书上给出的*p=&a是错误的句子,是不是在定义语句中把*p变成**p就好了?
2011-08-30 14:19
快速回复:有关函数调用数组的问题
数据加载中...
 
   



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

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