c语言中交换两个数据,为什么数组是地址传递捏

如题所述

如果是不是传地址,那会在函数中重新定义两个变量分别等于两个参数的值,对新定义的两个变量进行操作。和原来的两个变量无关。
如果是传地址,那就是把两个数的地址传到函数中,对两个地址中的内容进行操作。所以会改变两个数的值。

一般如果要通过函数来改变参数的值,C都是要用传地址的,C++还可以用引用。比如scanf()函数,因为要把输入的值传递给参数,所以要加取地址符号&.而printf就不用
温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-09-24
这是两个不同的问题。在C中,要想调用函数来实现交换两个变量,那么此函数参数必须是指针类型。
一个数组结构中的各个对象在内存中的布局是为连续的线性排列,程序员认为,数组名表示整个数组。实际上,它是数组第一个元素的地址(它很重要),将数组名作为函数参数就意味着传递一个地址过去。事实是,当知道了一个地址,你才可以采取某种层访问。‘[ ]’可以称为变址运算符,编译之前,它被语法器解析为第一个元素的绝对偏移地址,下标对应偏移量的因子:数组基类型所占的字节大小 * 下标pos 。因此a[pos]等于*(a+pos)。
第2个回答  2013-09-24
规定
相似回答