2.指针传递,把当前变量指针传到下一个函数,在另外函数里边修改指针的值会修改当前变量值
#include <stdio.h>
void func(int *p){
*p = 9
return
}
void swap(int *a, int *b){ //交换两个变量的值
int temp = *a
*a = *b
*b = temp
}
int main(void){
int a = 0
func(&a)//要修改一个变量,把他的地址传过去
printf("%d",a)//9
int b = 3int c = 4
swap(&b,&c)
return 0
}
不能把数组的首地址赋给另一个数组。因为数组名是常量指针类型,初始化之后是不能够被修改的。
有两种办法实现类似功能,一种是创建指针变量,把地址直接赋值指针变量:
例如 int a[100]int *b=a
第二种就是直接用循环一一复制每个元素。
例如 for(i=0i<strlen(a)i++) b[i]=a[i]
如果是不是传地址,那会在函数中重新定义两个变量分别等于两个参数的值,对新定义的两个变量进行操作。和原来的两个变量无关。如果是传地址,那就是把两个数的地址传到函数中,对两个地址中的内容进行操作。所以会改变两个数的值。
一般如果要通过函数来改变参数的值,C都是要用传地址的,C++还可以用引用。比如scanf()函数,因为要把输入的值传递给参数,所以要加取地址符号&.而printf就不用