C语言指针(含例子)
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
14
指针变量的定义
定义形式如下:
数据类型 *指针变量名;
如: int *p1, num;
表示的意思为:
定义了一个指针变量p1,它指向的是一个整型数 据。或者说,这时候p1中存储的是一个整型变量 的地址。
注意:指针变量定义了之后,需要给它赋一个确 定的变量的地址,否则,就会出现严重的系统错 误。
三
我有几种方法 1、按实验室名字
按变量名
可以到实验室
上机?
2、按实验室所在的 按变量地址
教室编号
(即 指针)
精选课件
11
理解指针
指针:也是一种变量,这种变量是用来存放内
存地址的。
精选课件
12
指针变量
指针是 字节的编号,即地址。 指针也是要存储的,因此每个指针也需要
一个变量来存储它。这个变量称为指针变 量。指针变量的值是某一定义好的变量的 地址。
DD00
11
a0
DD02
22
a1
DD04
33
a2
DD06
44
a3
DD08
55
a4
DD0A
DD0C DD00
p
DD0E DDDD00464 q
DD10
DD12
11
i
DD14
33
j
DD16
2000
例: int **p,*s,k=20; 2001
20
s=&k;
2002
p=&s;
2003
说明:
(1)指针p的基类型是int 类型的指针。
2004 2005 2006
2000
(2)&是求地址运算符。 2007
(3)因为基本数据类型int、 float、char等所需存储
2008
空间不同,所以需要定
指针的移动
① 指针变量只能进行逻辑运算和相减的算术运算。 ② 不是指向同一数组的指针变量运算是无意义的。 ③ 指针变量的值加1或减1,并不是地址加1中减1,而是加
上或减去该变量在内存中所占的字节数,该字节数由指 针的基类型决定。
精选课件
20
例: p=&a0;
q=p+2; q++; q--; i=*p; j=*q;
…..
a在内存中占4个字节,但&a的值是4 个字节中首个字节的编号
运算符&:取地址,如&a 的值为变量a 的地址
变量地址的输出可以用格式字符串 “%p”
#include <stdio.h> void main() { int a; a=8; printf("%d %p\n",a,&a); }
精选课件
整型变量a 指针变量pa
18
指针的运算方法
指针的移动
所谓移动指针就是对指针变量加上或减去一个 整数,或通过赋值运算,使指针指向相邻的存 储单元。只有当指针指向一串连续的存储单元 时,还可以和指向同一串连续存储单元的指针 进行相减的运算,除此之外,不可以对指针进 行任何其它的算术运算。
精选课件
19
指针的运算方法
9
理解指针
我们在程序中只需要指出变量名,无需知道每个变量 在内存中的具体地址,每个变量与具体地址的联系是 由C编译系统来完成的。对变量的存取操作就是对某 个存储单元进行操作。这种直接按变量的地址存取变 量值的方式称为“直接存取”。
精选课件
10
理解指针
4502
4503
4707
实
实
实Leabharlann Baidu
验
验
验
室
室
室
一
二
如:0013FF7C
精选课件
5
理解指针
变量:实质是代表了“内存中的某个存储单元”。
若在内存中定义了一个变量,则这个变量的内存的地址也就确定了。
精选课件
6
理解指针
变量的地址:表示变量在内存中的位置,其
值是该变量在内存中所占存储单元的首字节的编 号
精选课件
7
理解指针
内存中每个字节有一个编号-----地址 内存
f86
a=10;
f8a
printf("a:%d\n",a);
f8b
printf("*pa:%d\n",*pa);
f8c
printf("&a:%x(hex)\n",&a);
…...
printf("pa:%x(hex)\n",pa);
printf("&pa:%x(hex)\n",&pa);
}
精选课件
…...
C语言程序设计大赛培训之
指针
教学实践部计算机中心 胡晓丽
精选课件
1
指针的用途
指针在C 语言里应用极为广泛,是C语言的灵魂 使程序简洁、紧凑、高效 函数调用时批量参数的传递 内存的动态分配 内存地址的直接处理 复杂数据结构的简洁表达等许多其它数据类型
难以实现的复杂操作
精选课件
2
培训目的
掌握指针的概念、指针变量定义格式和引用 掌握指针的运算方法 指针应用举例
义指针变量的基类型。
…...
2004
精选课件
…...
整型变量k
变量s
变量p s=*p k=*s 所以:k=**p
17
运行结果:
例: 指针的概念
main() { int a;
a:10
f86
*pa:10
&a:f86(hex) f87
10
pa:f86(hex) f88
int *pa=&a;
&pa:f88(hex) f89
精选课件
15
指针变量的引用
#include <stdio.h> main() {
int a; //定义一个整型变量a
int *p1; //定义指向整型变量的指针p1
p1=&a; //p1中应存放变量a的地址
*p1=5; //通过指针变量p1给a赋值
printf("a=%d", a); }
精选课件
16
0
程序中: int i;
…...
2000
2001
i
2002
2003
k
float k;
编译或函数调用时为其分配内存单元
2005
变量是对程序中数据 存储空间的抽象
…...
精选课件
8
0013FF7C 0013FF7B 0013FF7A 0013FF79
0013FF00
理解指针
…… 00000000 00000000 00000000 00001000 ……
精选课件
3
理解指针
指针 就是内存中的变量的地址
精选课件
4
理解指针
0013FF7C 0013FF7B 0013FF7A 0013FF79
0013FF00
……
…… …..
内存单元的编号:计算机内 存中,每一个字节的存储单 元都有一个编号(亦称为内 存地址)
在VC中,内存单元的编号是 一个8位的十六进制数(表示 32位二进制数,VC是32位编 译系统)
精选课件
13
理解指针变量
例:int *p; int a=3;
p=&a;
1011
00000000
a
1012
00000011
2001 2002
&a
p
间接存取:这种通过变量p到变量a的地址, 然后再存取变量a的值的方式称为“间接存取”。
指针变量p指向了变量a的含义是:指针p中存放了变量a的地址。
精选课件