资源描述:
《C程序设计(第四版)谭浩强第8章_指针ppt课件.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、第八章指针表示复杂的数据结构动态分配内存有效地使用字符串、数组在调用函数时能得到多个返回值能直接处理内存地址对设计系统软件是很必要的使用指针可以:§8.1地址和指针的概念如果在程序中定义了一个变量,在对程序进行编译时,系统会给这个变量分配内存单元。内存区的每一个字节都有一个编号,这就是"地址"。1、按通过变量名直接找到变量地址,从而存取变量值的方式称为"直接访问"方式printf("%d",i);scanf("%d",&i);k=i+j;例如:2、变量i的地址存放在另一个变量p中,通过变量p获得变量i的地址,再对变量i进行存取变量值的方式称为"间接访问"。假设变量i_pointe
2、r用来存放整型变量的地址,可以通过语句:i_pointer=&i;将i的地址(2000)存放到i_pointer中。要存取变量i的值,可以采用间接方式:先根据变量名i_pointer,得到i的地址(2000),然后从2000、2001字节取出i的值(3)。3010我们把这种专门用来存放变量地址的变量称作是指针变量。一个变量的地址称为该变量的"指针"。如,地址2000就是变量i的指针。用来存放另一个变量的地址(指针)的变量,称为“指针变量”。如i_pointer变量。下面给出指针和指针变量的定义§8.2变量的指针和指向变量的指针变量上图中箭头表示"指向"关系,在程序中用"*"符号表
3、示"指向"。*i_pointer代表i_pointer所指向的变量i8.2.1定义一个指针变量定义指针变量的一般形式为基类型*指针变量名;下面都是合法的定义:int*pointer;//pointer是指向int型变量的指针变量char*p,c;//p是指向字符型变量的指针变量,c是字符变量。定义时,如果变量前面没有*号,则变量不是指针变量。int*pointerint*是类型pointer是变量名使用取地址运算符得到一个变量的地址,将其赋值给指针变量。inti,j,*pointer_1,*pointer_2;pointer_1=&i;pointer_2=&j;于是:pointe
4、r_1指向ipointer_2指向j8.2.2指针变量的初始化&:取地址运算符。#include"stdio.h"voidmain(){inti=5,j=6;int*i_pointer,*j_pointer;i_pointer=&i;j_pointer=&j;printf("i=%d,&i=%d",i,&i);printf("i_pointer=%d",i_pointer);printf("*i_pointer=%d",*i_pointer);printf("j=%d,&j=%d",j,&j);printf("j_pointer=%d",j_pointer
5、);printf("*j_pointer=%d",*j_pointer);}定义指针变量时要注意两点:在定义指针变量时,指针变量名前面的"*",用来标示该变量的类型为指针类型。(2)在定义指针变量时必须指定基类型。下面的赋值是错误的∶floata;int*pointer_1;pointer_1=&a;指针变量只能存放与其基类型一致的变量的地址定义指针变量时要注意两点:指针运算的结果与基类型密切相关例如,若shortint*p,i;p=&i;则p+1表示使指针往后移动2个字节若float*p,i;p=&i;则p+1表示使指针往后移动4个字节#include"stdio.h"vo
6、idmain(){charch='a',*ch_pointer=&ch;shortintsint_I=5,*sint_I_pointer=&sint_I;floatfloat_j=6,*float_j_pointer=&float_j;doubledouble_k=4,*double_k_pointer=&double_k;printf("ch_pointer=%d",ch_pointer);printf("ch_pointer+1=%d",ch_pointer+1);printf("sint_I_pointer=%d",sint_I_pointer);print
7、f("sint_I_pointer+1=%d",sint_I_pointer+1);printf("float_j_pointer=%d",float_j_pointer);printf("float_j_pointer+1=%d",float_j_pointer+1);printf("double_k_pointer=%d",double_k_pointer);printf("double_k_pointer+1=%d",double_k_point