第九章 指针
第三节 变量的指针和指向变量的指针变量-2
1. 指针变量作为函数参数
函数的参数可以是指针类型,作用是将一个变量的地址传递到一个函数中去
c语言中,实参变量个形参变量之间数据传递是单向的值传递,指针变量作为函数参数也要遵循这个原则
例子1
#include<iostream>voidswap(int*pdest1,int*pdest2){//两个指针变量作为形参//pdest1指向p1, pdest2指向p2//调用swap函数不能改变实参指针变量的值,p1还是指向a,p2还是指向b,//但是可以改变实参指针变量p1,p2指向的变量,也就是a,b的值inttemp;temp=*pdest1;//temp = a;*pdest1=*pdest2;//a = b;*pdest2=temp;// b = a;//指针调换没有达到目的,只是修改指向的变量,变量a和变量b并没有改变//退出这个函数后,这三个变量销毁,也就是说swap函数没有意义// 调用swap没有改变p1始终指向变量a,p2始终指向b// int *ptemp;// ptemp = pdest1;//ptemp指向a// pdest1 = pdest2;//pdest1指向b// pdest2 = ptemp;//pdest2指向a}intmain(){inta=5,b=6;int*p1,*p2;p1=&a;p2=&b;printf("a = %d, b= %d\n",a,b);if(a<b){swap(p1,p2);//两个指针变量作为实参}printf("a = %d, b= %d\n",a,b);return0;}- 例子2
#include<iostream>intmain(){int*p;//定义整型指针//*p代表指针变量p所指向的变量,但p到底指向谁呢,并不确定//所以*p可能会造成某个内存被无意修改了,从而使系统崩溃// *p = 5;// 正确用法,p指向了一段有效的内存,所以可以对它指向的内存进行赋值inta;p=&a;*p=5;printf("a = %d\n",a);return0;}