C语言第八章的课件.ppt
文本预览下载声明
第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=
显示全部