资源描述:
《第8章善于使用指针》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、8.1什么是指针8.2指针变量8.3通过指针引用数组8.4通过指针引用字符串8.5提高部分第8章善于使用指针P2108.1什么是指针在定义变量时,系统就给这个变量分配内存单元。编译系统根据程序中定义的变量类型,分配一定长度的空间。P2108.1什么是指针内存区的每一个字节有一个编号,这就是内存单元的“地址”在地址所标志的内存单元中存放数据。P210由于通过地址能找到所需的变量单元,我们可以说,地址指向该变量单元。在C语言中,将地址形象化地称为“指针”。意思是通过它能找到以它为地址的内存单元。8.1什么是指针P210int
2、a,b;ab20002002a=3;3直接访问8.1什么是指针P210inta;3aa_pointer2000a_pointer=&a;间接访问定义特殊变量a_pointer2000通过a_pointer取值8.1什么是指针P210为了表示将数值3送到变量中,可以有两种表达方法:(1)将3直接送到变量a所代表的单元中(2)将3送到变量a_pointer所指向的单元(即a所代表的存储单元)指向就是通过地址来体现的假设a_pointer中的值是变量a的地址(2000),这样就在a_pointer和变量a之间建立起一种联系,即
3、通过a_pointer能知道a的地址,从而找到变量a的内存单元一个变量的地址称为该变量的“指针”例如,地址2000是变量i的指针如果有一个变量专门用来存放另一变量的地址(即指针),则它称为“指针变量”a_pointer就是一个指针变量。指针变量就是地址变量,用来存放地址的变量,指针变量的值是地址(即指针)“指针”和“指针变量”是不同的概念可以说变量a的指针是2000,而不能说a的指针变量是2000指针是一个地址,而指针变量是存放地址的变量8.2指针变量8.2.1使用指针变量访问变量的例子8.2.2怎样定义指针变量8.2.
4、3怎样引用指针变量8.2.4指针变量作为函数参数P2118.2.1使用指针变量访问变量的例子例8.1通过指针变量访问整型变量。P211#includevoidmain(){inta,b;int*pointer_1,*pointer_2;a=100;b=10;pointer_1=&a;pointer_2=&b;printf(“a=%d,b=%d”,a,b);printf(“*pointer_1=%d,*pointer_2=%d”,*pointer_1,*pointer_2);}定义两个指针变量使p
5、ointer_1指向a直接输出变量a和b的值间接输出变量a和b的值#includevoidmain(){inta,b;int*pointer_1,*pointer_2;a=100;b=10;pointer_1=&a;pointer_2=&b;printf(“a=%d,b=%d”,a,b);printf(“*pointer_1=%d,*pointer_2=%d”,*pointer_1,*pointer_2);}此处*与类型名在一起。此时共同定义指针变量此处*与指针变量一起使用。此时代表指针变量所指
6、向的变量8.2.2怎样定义指针变量P212定义指针变量的一般形式为:类型*指针变量名;如:int*pointer_1,*pointer_2;int是为指针变量指定的“基类型”基类型指定指针变量可指向的变量类型如pointer_1可以指向整型变量,但不能指向浮点型变量8.2.2怎样定义指针变量P212下面都是合法的定义和初始化:float*pointer_3;char*pointer_4;inta,b;int*pointer_1=&a,*pointer_2=&b;*pointer_1=&a;错误pointer_3=&a;错
7、误pointer_1=&a;正确pointer_3=2000;错误8.2.3怎样引用指针变量P214在引用指针变量时,可能有三种情况:给指针变量赋值。如:p=&a;引用指针变量指向的变量。如有p=&a;*p=1;则执行printf(“%d”,*p);将输出1引用指针变量的值。如:printf(“%o”,p);使p指向a*p相当于a以八进制输出a的地址8.2.3怎样引用指针变量P214要熟练掌握两个有关的运算符:(1)&取地址运算符。&a是变量a的地址(2)*指针运算符(“间接访问”运算符)如果:p指向变量a,则*p就代
8、表a。k=*p;(把a的值赋给k)*p=1;(把1赋给a)例8.2输入a和b两个整数,按先大后小的顺序输出a和b。解题思路:用指针方法来处理这个问题。不交换整型变量的值,而是交换两个指针变量的值。#includevoidmain(){int*p1,*p2,*p,a,b;scanf(“%d,%d”,&