欢迎来到天天文库
浏览记录
ID:58885978
大小:740.50 KB
页数:69页
时间:2020-09-30
《C语言程序设计之入门课程ppt课件.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、程序设计与实践C第4集指针与链表地址和指针的概念内存区的每一个字节有一个编号,这就是“地址”。如果在程序中定义了一个变量,在对程序进行编译时,系统就会给这个变量分配内存单元。1、按变量地址存取变量值的方式称为“直接访问”方式printf(″%d″,i);scanf(″%d″,&i);k=i+j;2.另一种存取变量值的方式称为“间接访问”的方式。即,将变量i的地址存放在另一个变量中。在C语言中,指针是一种特殊的变量,它是存放地址的。一个变量的地址称为该变量的“指针”。例如,地址2000是变量i的指针。如果有一个变量专门用来存放另一变量的地址(即指针
2、),则它称为“指针变量”。上述的i_pointer就是一个指针变量。指针和指针变量的定义:变量的指针和指向变量的指针变量怎样定义指针变量定义指针变量的一般形式为基类型*指针变量名;下面都是合法的定义:float*pointer_3;char*pointer_4;可以用赋值语句使一个指针变量得到另一个变量的地址,从而使它指向一个该变量。例如:pointer_1=&i;pointer_2=&j;在定义指针变量时要注意两点:指针变量前面的“*”,表示该变量的类型为指针型变量。例:float*pointer_1;指针变量名是pointer_1,而不是*p
3、ointer_1。(2)在定义指针变量时必须指定基类型。需要特别注意的是,只有整型变量的地址才能放到指向整型变量的指针变量中。下面的赋值是错误的∶floata;int*pointer_1;pointer_1=&a;在对指针变量赋值时需要注意两点:⑴指针变量中只能存放地址(指针),不要将一个整数赋给一个指针变量。例:pointer_1=100;/*pointer_1是指针变量,100是整数,不合法*/(2)赋给指针变量的是变量地址不能是任意的类型,而只能是与指针变量的基类型具有相同类型的变量的地址。在引用指针变量时,可能有三种情况:⑴给指针变量赋值
4、。如:p=&a;⑵引用指针变量的值。如:printf(“%o”,p);⑶引用指针变量指向的变量。有关的两个运算符:&取地址运算符。&a是变量a的地址。*指针运算符(或称“间接访问”运算符),*p是指针变量p指向的对象的值。怎样引用指针变量例10.1通过指针变量访问整型变量#includevoidmain(){inta,b;int*pointer_1,*pointer_2;a=100;b=10;pointer_1=&a;/*把变量a的地址赋给pointer_1*/pointer_2=&b;/*把变量b的地址赋给pointer_2
5、*/printf(″%d,%dn″,a,b);printf(″%d,%dn″,*pointer_1,*pointer_2);}通过指针引用数组一个变量有地址,一个数组包含若干元素,每个数组元素都在内存中占用存储单元,它们都有相应的地址。指针变量既然可以指向变量,当然也可以指向数组元素(把某一元素的地址放到一个指针变量中)。所谓数组元素的指针就是数组元素的地址。数组元素的指针可以用一个指针变量指向一个数组元素。例如:inta[10];(定义a为包含10个整型数据的数组)int*p;(定义p为指向整型变量的指针变量)p=&a[0];(把a[0]
6、元素的地址赋给指针变量p)也就是使p指向a数组的第0号元素。C语言规定在指针指向数组元素时,可以对指针进行以下运算:加一个整数(用+或+=),如p+1减一个整数(用-或-=),如p-1自加运算,如p++,++p自减运算,如p--,--p两个指针相减,如p1-p2(只有p1和p2都指向同一数组中的元素时才有意义)。指针的运算分别说明如下:如果指针变量p已指向数组中的一个元素,则p+1指向同一数组中的下一个元素,p-1指向同一数组中的上一个元素。(2)如果p原来指向a[0],执行++p后p的值改变了,在p的原值基础上加d,这样p就指向数组的下一个元素
7、a[1]。(3)如果p的初值为&a[0],则p+i和a+i就是数组元素a[i]的地址,或者说,它们指向a数组的第i个元素。*(p+i)或*(a+i)是p+i或a+i所指向的数组元素,即a[i]。(5)如果指针变量p1和p2都指向同一数组,如执行p2-p1,结果是两个地址之差除以数组元素的长度。通过指针引用数组元素引用一个数组元素,可以用:(1)下标法,如a[i]形式;(2)指针法,如*(a+i)或*(p+i)。其中a是数组名,p是指向数组元素的指针变量,其初值p=a。例10.5输出数组中的全部元素假设有一个a数组,整型,有10个元素。要输出各元素
8、的值有三种方法:(1)下标法#includevoidmain(){inta[10];inti;for(i=0;i<10
此文档下载收益归作者所有