第7章 指 针
指针是C语言的精华部分,是C语言的重要特征.通过利用指针技术,可以描述各种复杂的数据结构,对字符串的处理可以更灵活,对数组的处理更方便,支持动态内存分配,提供了函数的地址调用和自由地在函数之间传递各种类型的数据等.
7.1 指针与指针变量
7.1.1 内存单元,地址和指针
1.内存单元和地址
在计算机中,所有的程序和数据都是存放在存储器的内存中.内存的基本单元是字节(Byte),一般把存储器中的一个字节称为一个内存单元,不同的数据类型所占用的内存单元数不等,如整型量占2个单元,字符量占1个单元等.为了正确地访问内存单元,必须给每个内存单元一个编号,该编号称为该内存单元的地址.
2.变量与地址
程序中每个变量在内存会有固定的位置,有具体的地址.由于变量的数据类型不同,它所占的内存单元数也不相同.若我们在程序中做定义为:
int a=1, b=2;
float x=3.4, y=4.5;
double m=3.124;
char ch1='a', ch2='b';
让我们先看一下编译系统是怎样为变量分配内存的.变量a , b是整型变量,在内存各占2个字节;x , y是单精度实型,各占4个字节;m是双精度实型,占8个字节;ch1,ch2是字符型,各占1个字节.由于计算机内存是按字节编址的,设变量的存放从内存2A00H单元开始存放,则编译系统对变量在内存的安放情况为图7-1所示.
变量在内存中按照数据类型的不同,占内存的大小也不同,都有具体的内存单元地址,如变量a 在内存的地址是2A00H,占据两个字节后,变量b的内存地址就为2A02H,变量m的内存地址为2A12H等.
3.指针
对内存中变量的访问,过去我们用scanf("%d%d%f",&a,&b,&x)表示将数据输入到变量的地址所指示的内存单元.这种按变量地址存取变量值的方式称为"直接访问"方式.那么,访问变量,首先应找到其在内存中的地址,或者说,一个地址唯一指向一个内存变量,我们称这个地址为变量的指针.如果将变量的地址保存在内存的特定区域,用变量来存放这些地址,这样的变量就是指针变量,通过指针对所指向变量的访问方式称为"间接访问"方式.变量的地址就是指针,存放指针的变量就是指针变量.
严格地说,一个指针是一个地址,是一个常量.而一个指针变量却可以被赋予不同的指针值,是变量.但通常把指针变量简称为指针.指针是特殊类型的变量,其内容是变量的地址.指针变量的值不仅可以是变量的地址,也可以是其他数据结构的地址.比如在一个指针变量中可存放一个数组或一个函数的首地址.
在一个指针变量中存入一个数组或一个函数的首地址有何意义呢 因为数组或函数都是连续存放的,通过访问指针变量取得了数组或函数的首地址,也就找到了该数组或函数.这样一来,凡是出现数组,函数的地方都可以用一个指针变量来表示,只要该指针变量中被赋予数组或函数的首地址即可.这样做将会使程序的概念十分清楚,程序本身也精炼,高效.在C语言中,一种数据类型或数据结构往往都占有一组连续的内存单元.用"地址"这个概念并不能很好地描述一种数据类型或数据结构,而"指针"虽然实际上也一个地址,但它却可以是某个数据结构的首地址,它是"指向"一个数据结构的,因而概念更为清楚,表示更为明确.这也是引入"指针"概念的一个重要原因.
设一组指针变量pa,pb,px,py,pm,pch1,pch2,分别指向上述的变量a,b,x,y,m,ch1,ch2,指针变量也同样被存放在内存,二者的关系如图7-2所示:
在图7-2中,左部所示的内存存放了指针变量的值,该值给出的是所指变量的地址,通过该地址,就可以对右部描述的变量进行访问.如指针变量pa的值为2A00H,是变量a在内存的地址.因此,pa就指向变量a.
7.1.2指针变量的定义,赋值与引用
1.指针变量的定义
指针变量与C语言其他的变量一样在使用前也必须先加以定义.指针变量
定义的一般形式为:
类型说明符 *变量名;
其中,*表示这是一个指针变量;变量名即为定义的指针变量名;类型说明符表示本指针变量所指对象(变量,数组或函数等)的数据类型.
例如: int * ptr1; /* ptr1(而不是*ptr1)是一个指向整型变量的指针变量,它的值是某个整型变量的地址.至于ptr1究竟指向哪一个整型数据是由ptr1所赋予的地址所决定的. */
float * ptr2; /* ptr2是指向单精度变量的指针变量. */
- c语言用指针排序 > 指针是C语言的精华部分
-
指针是C语言的精华部分
下载该文档 文档格式:DOC 更新时间:2007-12-02 下载次数:0 点击次数:1文档基本属性 文档语言: Simplified Chinese 文档格式: doc 文档作者: liutao 关键词: 主题: 备注: 点击这里显示更多文档属性 经理: 单位: ahszy 分类: 创建时间: 上次保存者: 修订次数: 编辑时间: 文档创建者: 修订: 加密标识: 幻灯片: 段落数: 字节数: 备注: 演示格式: 上次保存时间:
- 下载地址 (推荐使用迅雷下载地址,速度快,支持断点续传)
- DOC格式下载
- 更多文档...
-
上一篇:指针是C语言中的重要概念
下一篇:指针是C语言中的重要概念
点击查看更多关于c语言用指针排序的相关文档
- 您可能感兴趣的
- c语言指针函数编程题 c语言指针 c语言指针视频教程 c语言指针讲解 c语言指针的用法 c语言函数指针 c语言数组与指针 c语言文件指针 c语言中的指针
- 大家在找
-
- · 白马王子用英语怎么说
- · 2010职称考试成绩查询
- · 手动滑油泵装配图
- · 江苏3d福利彩票开奖
- · 鼠标光标图案主题下载
- · boot用硬盘装win7
- · 生产经营单位基本情况
- · 中国黄金周旅游
- · mfctab控件使用
- · 烟叶分级技能大赛试题
- · 招投标管理办法
- · 0592sport.com
- · 福州百度壹博
- · 提高网速软件下载
- · 三寸天堂mv
- · 北京电子科技学院
- · 密度的测量实验报告
- · ucar公司
- · 管工试卷
- · 2012年挑战杯创业大赛
- · 银龙鱼怎么养
- · 针织服装跟单流程
- · 轴套用原材料mail
- · 搜gou浏览器下载
- · 四川交通网自主选号
- · 2011年存款利率计算器
- · 岱山风筝节
- · 初中军训心得体会范文
- · 多玩yy3.10语音下载
- · 硬度分选仪
- 赞助商链接