1、普通变量
参考下面这段代码,
大多可能会认为程序会全部输出110,结果不然
这两段代码分别存在两个内存空间里面,main函数里面定义了一个data 它的值是10,地址为0061FF1C,当函数chang调用的时候,形参data才会被分配地址,地址为0061FF00,data = data +100,data = 110;但是main函数里面的data还是10,子函数里面的data是没有改变main函数里面change(data)这个函数里面的data这个实参的,实参里只是把值做了一个传递,在局部的修改的只是形参的地址里面的数据,mian函数里面的data是不会发生变化,都是data,但是地址不同,或者是定义的位置不同,
2、数组
看下面这个代码
输出结果
输出都是101,解释:数值当做实际参数传递的时候,操作的是不同内存空间,数组传递的时候,操作的一定是相同的内存空间,数组名当做实参,传递的是(地址),main函数里面有两个数值,1,2;数组里面的1和2分别有各自的地址,往chang函数里面传的时候,传递的是地址,这个前面的文章里有介绍,chang里的data相当于是mian函数里面传过来的1的地址(首个地址),操作的时候相当于对data的首地址操作(1的地址),跟mian函数里面操作是一样的,都是1的内存空间.