指针与函数 --教学过程篇
指针与函数 ----教学过程篇
指针作为函数参数 函数的形参为指针变量,指针变量作实参 预定义: 返回类型函数名1(参数类型*P1,参数类 型*P2, 使用: 函数名1(P1,P2
指针作为函数参数 • 函数的形参为指针变量,指针变量作实参 预定义: 返回类型 函数名1(参数类型 *P1,参数类 型 *P2,……) 使用: 函数名1(P1,P2,……)
指针作为函数参数 例子 #include maino i int a, b, c; int*pl, p2, p3 void turn(int *x, int *y, int *z) scanf(%d %d %d', &a, &b, &c) pI=&a p2=&b p3=&c; turn(pl, p2, p3)
指针作为函数参数 • 例子 #include main() { int a,b,c; int *p1,*p2,*p3; void turn(int *x,int *y,int *z) scanf(“%d %d %d”,&a,&b,&c); p1=&a; p2=&b; p3=&c; turn(p1,p2,p3); }
指针作为函数参数 void turn(int *x, int y, int *z Int temp? if (x>*y) i temp =*x; y=temp if(y>z) temp=*z; Z-y y=temp: 3 printf("%odn%dn%dn,*x,y,z)
指针作为函数参数 void turn(int *x,int *y,int *z ) { int temp; if (*x>*y) { temp = *x; *x = *y; *y = temp; } if(*y>*z) {temp = *z; *z = *y; *y = temp; } printf(“%d\n%d\n%d\n”,*x,*y,*z); }
指针作为函数参数 函数的形参为指针变量,变量地址作实参 预定义: 返回类型函数名1(参数类型*P1,参数类 型*P2, P1=&a:P2=&b 使用: 函数名1(&a,&b,)
指针作为函数参数 • 函数的形参为指针变量,变量地址作实参 预定义: 返回类型 函数名1(参数类型 *P1,参数类 型 *P2,……) P1=&a; P2=&b; …… 使用: 函数名1(&a,&b,……)
指针作为函数参数 容易出现的错误一: #include main i int a, b 2 void change(int *x, int *y) scanf(%d %d,, &a, &b) pI=&a; p2=&b; change(&a, &b) printfree 结果二:a=%d,b-%d7,a,b); printi(“结果三:*P1=%d,*P2=%d”,*P1,*P2)
指针作为函数参数 • 容易出现的错误一: #include main () { int a,b,*p1,*p2; void change(int *x,int *y) scanf(“%d %d”,&a,&b); p1=&a; p2=&b; change(&a,&b); printf(“结果二: a =%d,b=%d”,a,b); printf(“结果三: *P1= %d, *P2 =%d”,*P1,*P2); }
指针作为函数参数 void change(int*x, int *y) int s p-x, y-p, printf(结果一:*x=%d,*y=%d)*x2*y)
指针作为函数参数 void change(int *x,int *y) { int *p; p=x; x=y; y=p; printf(“结果一: *x =%d, *y= %d”,*x,*y); }
指针作为函数参数 若上面程序的输入为: 12 则输出为: 结果一:*x=2,*y=1 结果二:a=1.b=2 结果三:*p1=1,*p2=2
指针作为函数参数 若上面程序的输入为: 1 2 则输出为: 结果一:*x=2,*y=1 结果二:a=1,b=2 结果三:*p1=1,*p2=2
指针作为函数参数 总结 1在函数中对指针形参的值进行交换, 不会影响到a,b的值 2函数形参指针的交换不会影响到函数 实参
指针作为函数参数 • 总结: 1.在函数中对指针形参的值进行交换, 不会影响到a,b的值 2.函数形参指针的交换不会影响到函数 实参
指针作为函数参数 ·容易出现的错误二 void change(int*x,int y) i int* p 水 y="p:
指针作为函数参数 • 容易出现的错误二: void change(int *x,int *y) { int *p; *p=*x; *x=*y; *y=*p; }