指针变量作为函数参数 前面讲过:函数实参传形参,于是,形参数 据值的改变不会影响实参 但当用地址(指针变量)作参数时,作用为传 址,与数组名类似。 要求:形参、实参均为地址量。 例:swap(p1,p2) Int*pl,*p2 i int p p-p p1=*p2 c語醒设计
三、指针变量作为函数参数 但当用地址(指针变量)作参数时,作用为传 址,与数组名类似。 前面讲过:函数实参 传递 形参,于是,形参数 单向 据值的改变不会影响实参。 例: swap(p1 , p2 ) int p1 , p2 ; { int p; p=p1 ; p1=p2 要求:形参、实参均为地址量
main( 程序运行结果: f int a, b Int*XI,*X2; 输入:10,20 scanf(%/od, %d", &a, &b) 输出:a=20,b=10 &a &b swap(X, x2) printf("a=%od, b=d n", a, b) c語醒设计
p2= p; } main( ) { int a, b; int x1 , x2 ; scanf("%d,%d",&a, &b); x1=&a; x2=&b; swap(x1 , x2 ); printf("a=%d, b=%d \n",a, b); } 程序运行结果: 输入: 10, 20 输出: a=20, b=10
指针变量:指针变量: (实参) (形参) X1&a-p 10 a X2&b-p 20 c語醒设计
指针变量: (实参) 指针变量: (形参) 10 20 a b &a p1 p2 x1 x2 &b
程序中,实参与形参共用同一个内存单元, 通过修改地址所指的值来交换数据: 指针变量: 指针变量: (实参) (形参) XI&a-p 20-a X2/-&bp2 10-b c語醒设计
程序中,实参与形参共用同一个内存单元, 通过修改地址所指的值来交换数据: 20 10 a b &a p1 p2 x1 x2 &b 指针变量: (实参) 指针变量: (形参)
注意函数中p为普通变量,并非地址量; 2.如果swap函数中的交换语句改为: p1,*p2,*p2 p-p1, p1p2, p2p, 则仅将p1,p2的指向改变,函数返回后,p1 p2释放,a、b中的内容依然未改变。 c語醒设计
1. 注意函数中p为普通变量,并非地址量; 2. 如果swap函数中的交换语句改为: int p1 , p2 , p; p=p1 ; p1=p2 ; p2=p; 则仅将p1 , p2的指向改变,函数返回后,p1 , p2释放, a、b中的内容依然未改变