C语言第6章 指针
指针是C语言的精华部分,这是华中科技大学的教案,相信会对您的学习起到一定的作用。
第6章 指针 章6.1 6.2 6.3 6.4 6.5 指针概念 指针变量的定义和使用 指针运算 指针与数组及字符串 指针数组和多级指针
华中科技大学信息学院C 华中科技大学信息学院C语言程序设计
指针是C语言的精华部分,这是华中科技大学的教案,相信会对您的学习起到一定的作用。
6.1 指针概念6.1.1 变量的地址程序一旦被执行,则该程序的指令、常量和变量等都要 存放在计算机的内存中。计算机的内存是以字节为单位的一 片连续的存储空间,每个字节都有一个编号,这个编号就称 为内存的地址。
注意 : 存储单元的地址和它里面存放的内容完全是两回事。华中科技大学信息学院C 华中科技大学信息学院C语言程序设计
指针是C语言的精华部分,这是华中科技大学的教案,相信会对您的学习起到一定的作用。
如果在程序中用说明语句定义了一个变量,系统会根据 变量的数据类型给它分配一定大小的内存空间。
例如: 在一个源程序中定义了如下变量: short a = 3; int b = 100; long int c = 8; char d = 'a';1000 1002 1006
3100
1008
1008
‘a’
系统给变量a分配的地址是1000,变量b分配的地址是1002,变量c分 配的地址是1006变量a分配的地址是1008,,得到如上图所示的内存示意 图。华中科技大学信息学院C 华中科技大学信息学院C语言程序设计
指针是C语言的精华部分,这是华中科技大学的教案,相信会对您的学习起到一定的作用。
6.1.2
指针变量
除了前面介绍的普通变量之外,还使用另外一种特殊性 质的变量,即指针变量。 指针变量是存放地址的变量。它和普通变量一样占用一 定的存储空间。但是,它与普通变量不同之处在于,指针变 量的存储空间中存放的不是普通的数据,而是一个地址,例 如一个变量的首地址。
华中科技大学信息学院C 华中科技大学信息学院C语言程序设计
指针是C语言的精华部分,这是华中科技大学的教案,相信会对您的学习起到一定的作用。
设某指针变量的名字是px,同时存在另外一个名字为x的普通变量, 将变量x的地址被装入指针px的存储区域,即px的内容就是变量x的地 址,如下图所示:指针 px ×××× px=&x (a) 变量的地址装入指针 (b) 指针指向变量 变量 x 指针 px ×××× 变量 x
因此我们可以看出,访问一个变量有两种方法: (1)通过变量本身直接访问, (2)通过指向该变量的指针间接访问。华中科技大学信息学院C 华中科技大学信息学院C语言程序设计
指针是C语言的精华部分,这是华中科技大学的教案,相信会对您的学习起到一定的作用。
6.2 指针变量的定义和使用6.2.1 指针变量的定义及初始化1 . 指针变量的定义 指针变量在程序中使用之前,必须进行定义。 <存储类型 存储类型> <数据类型 *指针名 数据类型> 指针名 指针名; 存储类型 数据类型 int *px; char *name; static int *pa; 上面定义了名字为px,name和pa的三个不同类型指针。 变量名由用户命名,使用字符的起名规则与变量名相同。华中科技大学信息学院C 华中科技大学信息学院C语言程序设计
例如:
指针是C语言的精华部分,这是华中科技大学的教案,相信会对您的学习起到一定的作用。
指针变量的存储类型是指针变量本身的存储类型。它与 普通变量一样,分为:
auto(可以缺省) register static extern不同存
储类型的指针使用的存储区域不同,这与普通变 量完全相同。指针的存储类型和指针说明的程序位置决定了 指针的寿命和可见性。即指针变量也分为内部的和外部的, 全局的和局部的。华中科技大学信息学院C 华中科技大学信息学院C语言程序设计
指针是C语言的精华部分,这是华中科技大学的教案,相信会对您的学习起到一定的作用。
2 . 指针变量的初始化 指针变量在定义的同时,也可以被赋予初值,初始化时 赋予它的初值必须是地址量: <存储类型 存储类型> <数据类型 *指针名 初始地址值 数据类型> 指针名 初始地址值]; 指针名[=初始地址值 存储类型 数据类型 例如: int *pa=&a; 它把变量a的地址作为初值赋予了int型指针pa。 注意:从表面上看,似乎把一个初始地址量赋给了指针的目 注意 标变量*pa。其实不然,初始化形式中*pa=&a不是一个运算 表达式,而是一个说明性语句,说明指针pa指向a的地址。华中科技大学信息学院C 华中科技大学信息学院C语言程序设计
指针是C语言的精华部分,这是华中科技大学的教案,相信会对您的学习起到一定的作用。
下面的例子是把变量n的地址赋予指针p,并且把已经初 始化好的指针p赋给指针q: int n; int *p=&n; int *q=p; 指针变量中只能存放地址,不要将一个整型量赋给一个 指针变量,下面的赋值是不合法的:
int *pointer=1000;华中科技大学信息学院C 华中科技大学信息学院C语言程序设计
指针是C语言的精华部分,这是华中科技大学的教案,相信会对您的学习起到一定的作用。
例6.1 指针的概念 #include <stdio.h> void main() { int a; //指针pa指向a所在内存地址 int *pa = &a; a = 10; printf("a:%d\n",a); printf("*pa:%d\n",*pa); printf("&a:%x(HEX)\n",&a); printf("pa:%x(HEX)\n",pa); printf("&pa:%x(HEX)\n",&pa); }
运行结果: a:10 *pa:10 &a:fff4(HEX) pa:fff4(HEX) &pa:fff2(HEX)
注意: 上述输出结果中,后三行的结果每次运行时可能不一样, 但第一行和第二行输出值应该是 相等的。华中科技大学信息学院C 华中科技大学信息学院C语言程序设计
指针是C语言的精华部分,这是华中科技大学的教案,相信会对您的学习起到一定的作用。
例 求地址量数据长度的程序#include <stdio.h> void main( ) { // 定义字符串数组str,定义一char型指针ps指向它 char str[ ] = "abcdefghi", *ps = str; // 定义int型变量i,并定义一个int型指针pi指向它 int i = 6, * pi = &i; // 定义float型变量f,定义一float型指针pf指向它 float f = 6.4f, *pf = &f; // 定义double型变量d,定义一double型指针pd指向它 double d = 3.1415926, *pd = &d; printf("(1) size of string's pointer is %d \
printf("(2) size of INT's pointer is %d
\
bytes = %d bits.\n", sizeof(pi), 8 * sizeof(pi)); printf("(3) size of FLOAT's pointer is %d \
bytes = %d bits.\n",sizeof(pf), 8 * sizeof(pf)); printf("(4) size of DOUBLE's pointer is %d \
bytes = %d bits.\n", sizeof(pd), 8 * sizeof(pd)); } 该程序在Borland C++ V3.1上的运行结果为: (1) size of string's pointer is 2 byte = 16 bits. (2) size of INT's pointer is 2 bytes = 16 bits. (3) size of FLOAT's pointer is 2 bytes = 16 bits. (4) size of DOUBLE's pointer is 2 bytes = 16 bits.
byte = %d bits.\n", sizeof(
ps), 8 * sizeof(ps));
华中科技大学信息学院C 华中科技大学信息学院C语言程序设计
相关推荐:
- [文秘资料]班长职务辞职报告
- [文秘资料]完美的辞职报告
- [文秘资料]经典的员工辞职报告
- [文秘资料]医院口腔医生辞职报告
- [文秘资料]总经理辞职报告范文四篇
- [文秘资料]超市职员个人辞职报告
- [文秘资料]村妇联主任的辞职报告
- [文秘资料]辞职报告书格式
- [文秘资料]酒店辞职报告简单范文
- [文秘资料]联通的辞职报告
- [文秘资料]2017最新私企员工辞职报告范文
- [文秘资料]2019年度医院基层党组织书记抓党建述职
- [文秘资料]工作时间长辞职报告
- [文秘资料]辞职报告怎么写出来
- [文秘资料]个人能力原因辞职报告
- [文秘资料]网络工程师辞职报告
- [文秘资料]项目部辞职报告
- [文秘资料]缝纫工辞职报告怎么写
- [文秘资料]XXX州委书记述职报告
- [文秘资料]抓基层党建工作述职报告
- (王虎应老师讲课记录)六爻理象思维
- 八个常见投影机故障排除法
- 质量专业综合知识(中级)第一章质量管理
- 煤矿班组建设实施意见
- 我国快餐业与肯德基经营模式的比较与分
- 汽车保险杠模具标准化模架技术工艺研究
- 汽车二级维护作业团体赛比赛规程
- 装卸搬运工安全操作规程
- 高效的工作方法-刘铁
- 依据《生产安全事故报告和调查处理条例
- 2015专业PS夜景亮化效果图制作教程
- 企业劳动定额定员浅析
- 中枢神经系统医学影像学本科五年制第五
- 长城汽车参观探营第三站:研发试验中心
- 小升初语文专项训练
- 建筑工程质量检测资质分类与等级标准
- 周燕珉-我国养老社区的发展现状与规划
- 《生命里最后的读书会》读后感
- 实验室管理评审报告
- CCNA思科网院教程精华之网络基础知识




