文档详情

C语言第八章的课件.ppt

发布:2017-04-17约1.04万字共91页下载文档
文本预览下载声明
第8章 指针;本章要求;8.1 地址和指针的概念; 指针是C语言的一个重要概念,也是C语言的一个特色。它可以有效地表示复杂的数据结构;动态分配内存;能方便地使用字符串;有效而方便地使用数组;在函数调用时能返回得到多于一个的值;能直接处理内存地址等。 掌握指针的应用,可以使程序简洁、紧凑、高效。每一个学习和使用C语言的人,都应当深入地学习和掌握指针。可以说,不掌握指针就是没有掌握C的精华。; 程序中每个实体,如变量、数组、函数等都要在内存中占有一个可标识的存储区域。每个存储区域由若干个字节的存储单元组成。内存中每个字节的存储单元都有一个“地址”。一个存储区域的“地址”是指该区域中第一个字节的地址。 指针实际上是对存储单元地址的一种形象化描述。指针即地址。 ; 程序中的变量表示命名了的存储区域。不同类型变量其存???区域字节单元数不一样。 变量名表示该存储区域的别名。变量值是该存储区域中存储的数据。变量地址是该存储区域的首地址。 变量地址可通过对变量名进行取地址运算得到。如:a得到变量a的地址。 ;int a=3,b=4; float c=4.5,d=8.6; char e=x,f=y;;8.2 变量的指针和指向变量的指针变量;指针与指针变量;3; 变量的指针就是变量的地址。存放变量地址的变量则是指针变量,用来指向另一个变量。为了表示指针变量和它所指向的变量之间的联系,在程序中用“*”符号表示“指向”,例如,i_pointer代表指针变量,而*i_pointer是i_pointer所指向的变量,见图。 ; 可以看到,*i_pointer也代表一个变量,它和变量i是同一回事。下面两个语句作用相同: ① i=3; ② *i_pointer=3; 第②个语句的含意是将3赋给指针变量i_pointer所指向的变量。;8.2.1 定义指针变量; 定义格式中类型标识符规定指针变量的类型。 如:int * pa; 指针变量pa是一个整型指针变量,它指向一个整型变量。即pa可用来存放一个整型变量的地址(指针)。;float *pb,b; /*定义实型指针变量pb和实型变量b*/ pb=b; /*将实型变量b的地址赋值给指针变量pb,这样指针变量pb就指向了实型变量b,通过pb可以间接对b进行访问*/;8.2.2 指针变量的引用;有关指针的运算符;int * pa,a; pa=a; scanf(%d,pa);/*输入变量a的值,或写为: scanf(%d,a);*/ printf(%d,%d,a,*pa); ;例通过指针变量访问整型变量。 main( ) { int a,b; int*pointer_1, *pointer_2; a=100;b=10; pointer_1=a; /*把变量a的地址赋给pointer_1*/  pointer_2=b; /*把变量b的地址赋给pointer_2*/  printf(%d,%d\n,a,b);  printf(%d,%d\n,*pointer_1,*pointer_2); };main() { int *p1,*p2,i1,i2; scanf(%d,%d,i1,i2); p1=i1; p2=i2; printf(%d,%d\n,*p1,*p2); p2=p1; printf(%d,%d\n,*p1,*p2); };main( ) { int *p1,*p2,*p,i1=10,i2=20; p1=i1; p2=i2; printf(%d,%d\n,*p1,*p2); p=p1; p1=p2; p2=p; printf(%d,%d\n,*p1,*p2); };main( ) { int *p1,*p2,i1,i2,i; i1=10; i2=20; p1=i1; p2=i2; i=*p1; *p1=*p2; *p2=i; printf(i1=%d,i2=%d\n,i1,i2); };注意;8.2.3 用指针作为函数参数;main() { void sub(int *px, int *py); int x,y; sub(x,y); printf(%d,%d\n,x,y); } void sub(int *px, int *py) { *px=10; *py=20; };main() { void swap1(int *p1,int *p2); int a=3,b=
显示全部
相似文档