文档介绍:第6章指针
C 语言程序设计
北京科技大学计算机系
2018/4/20
概述
指针和指针变量
指针与数组
指针和函数
动态存储分配
第6章指针
2018/4/20
为什么要引入指针的概念?
指针可以有效地表示复杂数据结构,如队列、栈、链表等。
指针能象汇编语言一样处理内存地址,为动态内存分配提供支持。
指针可实现对数组和字符串的方便使用,提高某些子程序的效率。
关于指针的原则
学****原则
一定要学会
其实通常的应用很简单
使用原则
永远要清楚每个指针指向了哪里
永远要清楚指针的指向位置是什么
2018/4/20
2018/4/20
main()
{int a=5;
int b;
float x=;
…
}
变量的两个物理意义
1001
1002
1003
1004
…
1015
1016
1017
1018
…
2002
2003
2004
2005
a
B
x
变量的内容
变量的地址
指针和指针变量
5
×
变量的内容
变量的内容
变量的地址
变量的地址
基本概念
变量的地址和变量的内容
变量的地址
变量所分配存储空间的首地址
变量的内容
变量在所分配的存储空间中存放的数据
2018/4/20
2018/4/20
main()
{int a,b;
float x=35;
a=5;
b=a+3;
…
}
1001
1002
1003
1004
…
1015
1016
1017
1018
a
b
5
直接将整数 5 存入变量 a
直接将变量 a 的值取出,相加后存入变量b
利用变量名存取数据的方式称为“直接存取”方式。
直接存取和间接存取
8
2018/4/20
C 语言还提供了对内存单元的“间接存取”方式
p
1001
1002
1003
1004
…
1015
1016
1017
1018
…
2004
2005
2006
2007
a
b
5
1001
p
1001
a
3
main( )
{int a=5,b=3,*p;
p = &a;
*p = a + b;
…
}
变量的地址称为变量的指针
存放地址的变量称为指针变量
p指向c,c为p所指向的目标变量。
直接存取和间接存取
8
指针的类型和指针所指向的类型
int a=5,b;
float x;
int *pi;
float *pf;
pi指针的类型:int *
pf指针的类型:float *
pi所指向的类型:int
pf所指向的类型:float
2018/4/20
2018/4/20
void main()
{ float x, *p1=NULL;
float *p2=&x;
int y,*p3=&y;
char name[20], *cp=name;
…
}
2000
…
2004
…
2008
…
2012
…
2016
…
2020
…
2040
x
p1
p2
y
p3
name
cp
2000
指针和指针变量
指针变量的定义
NULL
void main()
{float x,*p1,*p2;
int y,*p3;
char name[20];
char *cp;
…
}
指针变量定义的形式
指针变量初始化
数据类型* 指针变量名
2012
2020