下面我通过两个列子来阐述一下值传递和指针传递(ps:在c、c++、java、python等语言中都通用)
一、值传递
public static int change_integer(int a){
a=a+1;
return a;
}
public static void main(String [] args){
int a=1;
System.out.println(change_integer( a));
System.out.println(a);
}
你会发现以上第一个输出为2,第二个输出为1,我们把一个变量传递给一个函数,函数对他进行操作,但是却不会改变原变量的值,对于基本数据类型的变量,变量传递给函数后,函数会在内存中复制一个新的变量,从而不影响原来的变量。(我们称此为值传递)
二、指针传递
public static int[] change_list(int [] a){
a[0]=a[0]+1;
return a;
}
public static void main(String [] args){
int a[]={1,1,1};
System.out.println(change_list( a)[0]);
System.out.println(a)[0];
}
比较输出结果,第一个输出为2,第二个输出也为2,表传递给函数的是一个指针,指针指向序列在内存中的位置,在函数中对表的操作将在原有内存中进行,从而影响原有变量。 (我们称此为 指针传递)