计算机与程序设计语言class7指针_第1页
计算机与程序设计语言class7指针_第2页
计算机与程序设计语言class7指针_第3页
计算机与程序设计语言class7指针_第4页
计算机与程序设计语言class7指针_第5页
已阅读5页,还剩12页未读 继续免费阅读

付费下载

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

课前小演示演示一个产生5次随机数的c语言程序;如何未卜先知?指针(1)C语言——第七部分为什么使用指针?2023/4/13动态分配内存的唯一方法有效地表示复杂的数据结构得到多于一个的函数返回值传地址方式调用函数使程序简洁、紧凑、高效成也萧何败也萧何程序运行内存的分块程序代码区存放可执行程序的二进制代码全局常量区存放常量,如char*pName=“尹庚”;全局变量区存放全局变量和静态变量堆与栈栈(stack)1M~4M左右(通过编译器和操作系统配置)系统自动分配,速度快堆(heap)操作系统所有内存空间程序员手动申请和释放(malloc和free函数)速度比较慢示例inta=0;全局初始化区

char*p1;全局未初始化区

intmain()

{

intb;//栈

chars[]=“abc”;//栈

char*p2;//栈

char*p3=“123456”;//常量区

staticintc=0;//全局变量区

p1=(char*)malloc(10);//堆

p2=(char*)malloc(20);//堆

getchar();return0;

}

变量与地址程序中:shortinti=100;

floatk=15.2;

内存中每个字节有一个编号地址变量是对程序中数据存储空间的抽象,包括变量类型、变量名称、内存起始位置、值…...…...0x28FF440x28FF450x28FF460x28FF49内存0x28FF47100i15.2k思考教室里面有一排行李箱给尹庚老师分配了一个大号行李箱(123、124、125、126),里面放置了一套西装;有一个大行李箱指示牌(200、201、202、203),里面保存着一个数字123;以上内容中类比了那些C语言指针方面的知识点;&与*运算符&取地址运算符

&i获取变量i地址printf("0x%X",&i); 0x28FF44*定义变量时称为指针运算符

int*p=&i;其他应用时称为间接引用运算符

*p=15;辨析

p

等价

&i等价&(*p)

*p等价i

等价*(&i)指针变量的定义与初始化[存储类型]

数据类型

*指针名;例int

*p1=0,*p2=NULL;float*q=NULL;staticchar*name=“尹庚”;注意:1、int*p1,*p2;

与int*p1,p2;2、强制要求指针定义时必须初始化指针变量必须先赋值再使用例inti;int*p=&i;变量必须已说明过类型应一致例inti;int*p=&i;int*q=p;用已初始化指针变量作初值例

intmain(){inti=10;int*p;

*p=i;printf(“%d”,*p);…….}危险!指针的类型int*ptr; //指针的类型是int*

char*ptr; //指针的类型是char*

int**ptr; //指针的类型是int**

int(*ptr)[3]; //指针的类型是int(*)[3]

int*(*ptr)[4]; //指针的类型是int*(*)[4]

int(*ptr)(int); //指针的类型是int(*)(int,int);

void*ptr; //

指针的类型是void*零指针与空类型指针零指针int*p=0;

int*p=NULL;避免指针变量的非法引用、在程序中常作为状态比较void*类型指针

表示void*p;

使用前进行指针类型的强制转换char*p1=(char*)p;奇怪的程序//不要问为什么,只看这种现象#include<stdio.h>intmain(){int*p=0,a[2]={1,2};a[3]=0x28ff38;*p=100;printf("a[0]\t0x%X\t%d\n",&a[0],a[0]);getchar();return0;}指针变量作为参数—传地址特点:共享内存,”双向”传递swap(int*p1,int*p2){intp;p=*p1;*p1=*p2;*p2=p;}swap(int*p1,int*p2){int*p=0;*p=*p1;*p1=*p2;*p2=*p;}错误正确指针与数组一级指针与一维数组intq[10],*p=q;两者在一定程度可以互换使用p[i]q[i]*(p+i)*(q+i)二级指针与二维数组intq[5][10],(*

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论