我们写一个函数
在In main互换后,x和y并没有改变,这里涉及到了函数作用域的问题
可以自己体会到每个函数的变量都是独立的,不能互相干扰,不能冲突
我们来使用指针
In main互换后x和y变啦
其实很好理解
反汇编下其实可以理解更好,但不用也可以很好理解
所以有了指针(地址),相当于有了哆啦A梦的任意门
#include "stdafx.h" #include <windows.h> void swap(int *x, int *y); void swap(int *x, int *y) { int temp; printf("In swap,互换前:x = %d, y = %d ", *x, *y); temp = *x; *x = *y; *y = temp; printf("In swap,互换后:x = %d, y = %d ", *x, *y); } int main() { int x = 3, y = 5; printf("In main,互换前:x = %d, y = %d ", x, y); swap(&x, &y); printf("In main,互换后:x = %d, y = %d ", x, y); system("pause"); return 0; }
接下来看看传数组,呜呜最讨厌数组了
发现第六个都是520
所以可以说,这里传递的参数不是将整个数组传递进去
只是将数组的第一个地址传递进去了
所以改的时候是把地址所在的值给改咯!!
这里传入的是数组的第一个元素的地址