欢迎来到天天文库
浏览记录
ID:9972253
大小:1.09 MB
页数:23页
时间:2018-05-12
《嵌入式linux下c程序设计--06指针》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、嵌入式Linux下C程序设计主讲:成宝宗指针一、变量的地址计算机中,数据存储在内存中。内存可划分为若干存储单元,每个单元可以存放8位二进制数,既1个字节。内存单元采用线性地址编码,每个单元具有唯一一个地址编码1、变量的地址:系统为变量分配的内存地址一个无符号整型数inta;floatb;a=3;b=5;2、变量的有关概念存储内容:数据值空间大小:数据类型空间位置:地址3AB03AB8ab二、变量的访问方式1、直接访问2、间接访问定义一个变量p,存放a的地址,通过p访问a若将变量p的值改为3AB0(b的地址),则可以通过p访问
2、binta;floatb;a=3;b=5;3AB03AB8ab将3送入变量a所占的内存单元(地址3AB0)p如何定义p?如何获得变量a的地址?如何通过p访问a?三、指针变量指针变量是存放地址的变量如:p为指针变量,它存放整型变量a的首地址我们称,指针变量p指向指针变量的定义与引用一、定义方法类型符*指针变量名指针变量的类型所指向的内存中存放的数据的类型二、指针变量的赋值指针变量的值为地址,是个无符号整数。但不能直接将整数常量赋给指针变量。用变量的地址给指针变量赋值(求地址运算符&)注:变量的类型必须与指针变量的类型相同用相同
3、类型的指针变量赋值注:若不赋值,则指针标量的值是随机的。赋空值NULL指针变量的初始化方法:赋空值NULL用已定义的变量的地址如:int*p1,*p2;char*ps;float*pf1,*pf2;如:inta,b,*p;p=&a;如:inta;int*p1,*p2;p1=&a;p2=p1;如:p=null;或p=0;int*p1=NULL;floata;float*p2=&a;charch,*p3=&ch;三、指针变量的应用1、两个有关的运算符:*、&形式:&任意变量/*取地址运算符*/*指针变量/*指针运算符*/含义:&
4、a表示变量a所占据的内存空间的首地址*p表示指针变量p所指向的内存中的数据应用:通过指针变量访问所指变量1)将指针变量指向被访问的变量如:inta=5,*p,b;p=&a;2)访问所指变量取内容:b=*p;printf(“%d”,*p);存内容:*p=100;注意:*p若出现在”=”的右边或其他表达式中则为取内容。*p若出现在”=”的左边则为存内容。指针和数组一、一维数组与指针1、数组是连续存放的若干个元素的集合2、数组名就是指向此数组第1个元素的指针(首地址)如:inta[10],*p;则p=a等价于p=&a[0];3
5、、某一元素的地址:p=&a[i]用指针引用该元素:*pa[i]4、数组元素的下标在内部实现时,统一按“基地址+位移”的方式处理既:aa+1a+I故表示数组元素的地址可以用:p+i、a+I表示数组元素的内容可以用:a[i]、*(p+i)、*(a+i)指针变量和数组运算指针变量指向数组的方法指向数组首地址用赋初值方法:*指针变量=数组名在程序中赋值: 指针变量=数组名指向某数组元素用赋初值方法:*指针变量=&数组名[下标]在程序中赋值: 指针变量=&数组名[下标]指向一维数组的指针变量的使用当指针变量指向数组首地址引用数组元素[
6、i]:*(指针变量+i)当指针变量指向下标为i的数组元素引用数组元素[i]:*指针变量引用数组元素[i-k]:*(指针变量-k)引用数组元素[I+k]:*(指针变量+k)指针VS下标下标运算比较直观,下标运算只能做绝对引用指针运算非常灵活,指针运算可以做相对引用指针元素引用和下标元素引用实质相同当指针变量指向数组首地址后,对下标为i的数组元素引用的四种方法*(指针变量+i)*(数组名+i)指针变量[i]数组名[i]例如:inta[10],*p=a;若要引用a[5]数组元素:*(p+5)、*(a+5)、p[5]、a[5]指针变
7、量的算术运算指针变量和整数的算术运算指针变量+整数指针变量-整数++指针变量--指针变量指针变量++指针变量--指针变量和指针变量的减法运算指针变量1-指针变量2注意:要求这两个指针变量必须指向同一个数组,否则不能进行减法运算;运算结果为它们所指向的数组元素下标相差的整数。例如:inta[10],*p=&a[5],*q=&a[8];q-p(值为3)p-q(值为-3)指针变量的关系运算指针变量1关系运算符 指针变量2注意:要求这两个指针变量必须指向同一个数组,否则不能进行关系运算;运算结果为逻辑真(1),或逻辑假(0)。例如:
8、inta[10],*p=&a[5],*q=&a[8];q>p(值为1)q<p(值为0)p>=a(值为1)p>=&a[8](值为0)指针和字符串将指针变量指向字符串常量的方法第一种方法:给指针变量赋初值的方法格式:*指针变量=字符串常量例如:char*p=“abcd”第二种方法:先定义指针变
此文档下载收益归作者所有