《(54)--8.2 指针变量的引用.ppt》由会员分享,可在线阅读,更多相关《(54)--8.2 指针变量的引用.ppt(17页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、8.2 指指针变量的引用量的引用8.2.1 与指与指针相关的运算符相关的运算符 pointer_2=&b;/*把变量的地址赋给pointer_*/printf(%d,%dn,a,b);/*将将pointer_1,pointer_2指向的变量a和b的值输出*/printf(“%d,%dn”,*pointer_1,*pointer_2);#include void main()int a,b;int*pointer_1,*pointer_2;a=100;b=10;pointer_1=&a;/*把变量的地址赋给 pointer_1*/输出结果:100,10100,10案例案例1:关于指针变量的两个基
2、本运算符:关于指针变量的两个基本运算符:&取地址运算符取地址运算符 *指针运算符,表示指针运算符,表示指向指向 示例:示例:p=&a;*p=a=3;p表示指针变量,而表示指针变量,而*p表示所指向的变量表示所指向的变量a。“变量变量p指向了变量指向了变量a”的含义就是的含义就是指针变量指针变量p中存放了变量中存放了变量a的地址的地址指针变量的引用与指针相关的运算符C语言“”和和“*”“*”运算符应用运算符应用 优先级:相同优先级:相同 结合性:自右至左结合性:自右至左 pointer_;*pointer_=?(表达式(表达式1)*pointer_表示变量表示变量a,则,则&*pointer_与
3、相同,即变量与相同,即变量a的地的地址,也是址,也是pointer_ 本身。本身。pointer_2*pointer_;表示表示pointer_2和和pointer_1值相同值相同*=?即即*=(*pointer_)=?即即(*pointer_)=a+C语言指针变量的引用与指针相关的运算符案例案例2:输入和两个整数,按先大后小的顺序输出和。:输入和两个整数,按先大后小的顺序输出和。#include int main()int*p1,*p2,a,b;scanf(“%d,%d”,&a,&b);/*输入输入5和和9*/p1=&a;p2=&b;if(ab)p1=&b;p2=&a;printf(a=%d
4、,b=%dnn,a,b);printf(max=%d,min=%dn,*p1,*p2);return 0;运行情况如下:运行情况如下:5,9a=5,b=9max=9,min=5当输入a=5,b=9时,由于ab,将p1和p2交换C语言指针变量的引用与指针相关的运算符注意:注意:指针变量中只能存放指针变量中只能存放地址地址(指针),不要将一个整数(指针),不要将一个整数(或任何其他非地址类型的数据)赋给一个指针变量。(或任何其他非地址类型的数据)赋给一个指针变量。在使用指针变量前,必须先指定其值。在使用指针变量前,必须先指定其值。pointer_1=&a;pointer_2=&b;printf(“
5、%d,%dn”,*pointer_1,*pointer_2);C语言指针变量的引用与指针相关的运算符8.2.2 指指针变量做函数参数量做函数参数8.2 指指针变量的引用量的引用案例案例3:编写函数,完成两个数的互换。(基本变量作函数参数):编写函数,完成两个数的互换。(基本变量作函数参数)#include void swap(int a,int b)int t;t=a;a=b;b=t;int main()int a=3,b=5;swap(a,b);printf(“%d,%dn”,a,b);return 0;指针变量的引用指针变量做函数参数C语言35实参实参 ab形参形参 abt35#inclu
6、de void swap(int a,int b)int t;t=a;a=b;b=t;int main()int a=3,b=5;swap(a,b);printf(“%d,%dn”,a,b);return 0;35实参实参 ab形参形参 abt35353指针变量的引用指针变量做函数参数C语言输出出结果:果:3,5未完成主函数中局部未完成主函数中局部变量量a和和b的的值的互的互换当当swap函数函数执行完后,行完后,a、b、t的的存存储空空间都被自都被自动释放。放。案例案例3:编写函数,完成两个数的互换。(基本变量作函数参数):编写函数,完成两个数的互换。(基本变量作函数参数)形参为指针类型,实
7、参可以是地址,可以是指针类型形参为指针类型,实参可以是地址,可以是指针类型#include void swap(int *p1,int *p2)int t;t=*p1;*p1=*p2;*p2=t;int main()int a=3,b=5;int *k1,*k2;k1=&a;k2=&b;swap(k1,k2);/*实参和形参基类型相同实参和形参基类型相同*/printf(“%d,%dn”,a,b);return 0;tp1p2形参形参5&a&b实参实参3abk1k2&a&b案例案例4:编写函数,完成两个数的互换。:编写函数,完成两个数的互换。形参为指针类型,实参可以是地址,可以是指针类型形参为
8、指针类型,实参可以是地址,可以是指针类型#include void swap(int *p1,int *p2)int t;t=*p1;*p1=*p2;*p2=t;int main()int a=3,b=5;int *k1,*k2;k1=&a;k2=&b;swap(k1,k2);/*实参和形参基类型相同实参和形参基类型相同*/printf(“%d,%dn”,a,b);return 0;t&a&b3实参实参3abk1k25&a&b53p1p2形参形参输出出结果:果:5,3完成了主函数中局部完成了主函数中局部变量量a和和b的的值的互的互换当当swap函数函数执行完后,行完后,p1、p2、t的存的存储
9、空空间都被自都被自动释放。放。形参为指针类型,实参可以是地址,可以是指针类型形参为指针类型,实参可以是地址,可以是指针类型#include void swap(int *p1,int *p2)int t;t=*p1;*p1=*p2;*p2=t;int main()int a=3,b=5;int *k1,*k2;k1=&a;k2=&b;swap(k1,k2);/*实参和形参基类型相同实参和形参基类型相同*/printf(“%d,%dn”,a,b);return 0;int *t;能否得能否得 到结果到结果?利用指针变量做函数参数返回多个结果利用指针变量做函数参数返回多个结果案例案例5:编写函数完成三个数中找出最大值和最小值,编写函数完成三个数中找出最大值和最小值,主函数中输入三个整数,并输出结果。主函数中输入三个整数,并输出结果。指针变量的引用指针变量做函数参数C语言问题:怎么将函数中得到的两个结问题:怎么将函数中得到的两个结果返回到主函数中输出?果返回到主函数中输出?指针基础指针变量做函数参数C语言1.与指针相关的运算符指针变量要有确定的值才能使用*和&两个运算符的作用2.指针变量做函数参数形参是指针类型,实参可以是指针类型,可以是变量地址用指针做函数参数可以使得形参和实参同时发生变化
限制150内