教学文库网 - 权威文档分享云平台
您的当前位置:首页 > 范文大全 > 文秘资料 >

C语言第6章 指针

来源:网络收集 时间:2026-09-12
导读: 指针是C语言的精华部分,这是华中科技大学的教案,相信会对您的学习起到一定的作用。 第6章 指针 章6.1 6.2 6.3 6.4 6.5 指针概念 指针变量的定义和使用 指针运算 指针与数组及字符串 指针数组和多级指针 华中科技大学信息学院C 华中科技大学信息学院C语言程序

指针是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语言程序设计

指针是C语言 …… 此处隐藏:3366字,全部文档内容请下载后查看。喜欢就下载吧 ……

C语言第6章 指针.doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.jiaowen.net/fanwen/736374.html(转载请注明文章来源)
Copyright © 2020-2025 教文网 版权所有
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:78024566 邮箱:78024566@qq.com
苏ICP备19068818号-2
Top
× 游客快捷下载通道(下载后可以自由复制和排版)
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能出现无法下载或内容有问题,请联系客服协助您处理。
× 常见问题(客服时间:周一到周五 9:30-18:00)