第5章 指针1(周)

第5章 指针1(周)

ID:43739289

大小:555.50 KB

页数:25页

时间:2019-10-13

第5章 指针1(周)_第1页
第5章 指针1(周)_第2页
第5章 指针1(周)_第3页
第5章 指针1(周)_第4页
第5章 指针1(周)_第5页
资源描述:

《第5章 指针1(周)》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、第5章指针--难点重点内容提要指针的概念难点:理解指针数据类型指针与数组的关系动态内存分配函数及其应用一维、二维动态数组的实现用指针做函数参数Skill用指针做函数参数编程指针的故事“该程序执行了非法操作,即将关闭”这种错误几乎全是由指针和数组导致的黑客攻击服务器利用的bug绝大部分都是指针和数组造成的某班有n名学生,记录所有学生的成绩;intn;scanf("%d",&n);ints[n];可以用指针实现数组大小的动态调整。int*p;p=(int*)malloc(n*sizeof(int));概念引入:解决问题:某班有100名学生,记录下所有学生的成绩;ints[100];指针§

2、5.1指针的概念地址指针一、地址指令和数据都保存在内存内速度快,但是掉电即失可以随机访问只要指名要访问的内存单元的地址,就可以立即访问到该单元二、指针指针是C语言的重要特点。指针既可以指向各种类型的变量,也可以指向函数。正确的使用指针,能有效地表示和处理复杂的数据结构,特别有利于对动态数据的处理。采用访问地址的方法存取数据,速度快,效率高。存放地址的变量——指针变量指针变量中存放的地址——指针指针变量定义格式:数据类型*变量名;int*p1,*p2;char*pc,c;*指明说明的变量为指针变量表明指针变量所指向的变量的数据类型定义了指向整型变量的指针变量p1,p2定义了字符型变量c

3、,及指向字符型变量的指针变量pc?指针变量定义时分配一存放地址的内存单元(4字节),其中值不定,可用同类型变量的地址对其初始化指针变量的定义VC环境&与*运算符含义:&(取地址运算符)*(指针运算符)含义:取指针变量所指向变量的内容单目运算符优先级:2结合性:自右向左两者关系:互为逆运算含义:取变量的地址单目运算符优先级:2结合性:自右向左inta=10;0x0037b000a0x0037b0040x0037b0080x0037b00B&a…...…...整型变量10指针变量0x0037b000仅仅是定义了可以指向int型数据的指针变量,但并未指向a使其指向a需对指针变量初始化int

4、*pa;pa=&a;int*pa=&a;pa指针变量赋值指针变量赋值inta=10;0x0037b000a0x0037b0040x0037b0080x0037b00B&a…...…...整型变量10指针变量0x0037b000int*pa;pa=&a;int*pa=&a;paPointershavenames,typesandvalues例如main(){inta,b;int*pa,*pb;a=100;b=10;pa=&a;pb=&b;printf("%d,%d",a,b);printf("%d,%d",*pa,*pb);}定义指针变量pa,pb将a的地址送pa将b的地址送p

5、b输出所指向的变量的内容运行结果为100,10100,10例:#includemain(){inti,*ip;ip=&i;i=10;printf("%d,%d",i,*ip);*ip=100;printf("%d,%d",i,*ip);}运行结果:10,10100,100指针赋值运算-将指针变量初始化为空指针,意为该变量不指向任一内存单元-将变量的地址赋值给指针-同类型的指针变量之间互相赋值int*ptr=NULLinta;int*p=&a;指针在使用前一定要赋值确定指针指向哪里为指针变量赋的值必须是一个地址inta,*pa=&a,*pb;pb=pa;指针赋

6、值运算-把数组的首地址赋予指向数组的指针变量-将把字符串首地址赋予指向字符类型的指针变量注意:仅将首地址赋入,而不是将字符串"clanguage"赋予pc-将函数的入口地址赋予指向函数的指针变量char*pc;pc="clanguage";或:char*pc="clanguage";int(*pf)();pf=f;/*f为函数名*/为指针变量赋的值必须是一个地址inta[5],*pa;pa=a;(或pa=&a[0];)如:p+n、p-n、p++、p--、++p、--p其中:p为指针变量,n为整数+——p向地址编号增大的方向移动-——p向地址编号减小的方向移动注意:在对指针进行加、减运

7、算中,数字1不再代表十进制中的整数1,事实上p+1p+1*sizeof(基类型)指针加、减运算指针加、减运算例如:int*p;p++;相当于p=p+sizeof(int);例如:char*p;p=p+n;相当于:p=p+n*sizeof(char);p+n的值=ADDR+n*sizeof(ptype)p-n的值=ADDR-n*sizeof(ptype)p当前的值pp+1a[0]a[1]……..2的高位字节2的低位字节2的高位字节2的低位字节20002002

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。