《C语言程序设计》课程教学课件(PPT讲稿)c语言指针完整教程

指针 C程序设计中使用指针可以: ●使程序简洁、紧凑、高效 ●有效地表示复杂的数据结构 ●动态分配内存 ●得到多于一个的函数返回值
指针 C程序设计中使用指针可以: ⚫使程序简洁、紧凑、高效 ⚫有效地表示复杂的数据结构 ⚫动态分配内存 ⚫得到多于一个的函数返回值

§81指针的概念 ★变量与地址 内存中每个字节有一个编号-地址 内存 : 程序中:inti; : 2000 2001 float k; 2002 编译或函数调用时为其分配内存单元 2003 0 2005 变量是对程序中数据 存储空间的抽象
§8.1 指针的概念 变量与地址 程序中: int i; float k; 内存中每个字节有一个编号-地址 . . 2000 2001 2002 2005 内存 0 2003 i k 编译或函数调用时为其分配内存单元 变量是对程序中数据 存储空间的抽象

★指针与指针变量 冬指针:一个变量的地址 指针变量:专门存放变量地址的变量叫~ 指针 2000 整型变量i 2001 10 变量的地址 变量的内容 2002 2003 2004 ←一变量i pointer 3005 指针变量 变量地址(指针) 指向 地址存入 变量 指针变量 变量值
. . 2000 2004 2006 2005 整型变量i 10 变量i_pointer 2001 2002 2003 指针与指针变量 ❖指针:一个变量的地址 ❖指针变量:专门存放变量地址的变量叫~ 2000 指针 指针变量 变量的地址 变量的内容 指针变量 变量 变量地址(指针) 变量值 指向 地址存入 指针变量

★&与*运算符 合文养套行 置关取指勇嶷漫的内容 单目运算符 镥运算符) 1 pointer *i pointer 优先级理犹先级:2 结合性:自 1上人L上 &i pointer 2000 10 i : 2000 整型变量i 2001 10 i pointer &i=&(*i pointer) 2002 1 *i pointer *(&i) 2003 2004 ←一变量i pointer 2005 -2000 指针变量 2006 i pointer 指针变量,它的内容是地址量 *i pointer- 指针的目标变量,它的内容是数据 &i pointer 指针变量占用内存的地址
&与*运算符 ❖含义 含义: 取变量的地址 单目运算符 优先级: 2 结合性:自右向左 含义: 取指针所指向变量的内容 单目运算符 (指针运算符) 优先级: 2 结合性:自右向左 ❖两者关系:互为逆运算 ❖理解 . . 2000 2004 2006 2005 整型变量i 10 变量i_pointer 2001 2002 2003 2000 指针变量 i_pointer-指针变量,它的内容是地址量 *i_pointer-指针的目标变量,它的内容是数据 &i_pointer-指针变量占用内存的地址 2000 10 i_pointer *i_pointer &i_pointer i i_pointer &i &(*i_pointer) i *i_pointer *(&i) i_pointer = &i = &(*i_pointer) i = *i_pointer = *(&i)

★直接访问与间接访问 令直接访问:按变量地址存取变量值 间接访问:通过存放变量地址的变量去访问变量 例 i=3; 直接访问 2000 整型变量i 2001 20= 2002 2003 2004 ←一变量i pointer 2005 2000 指针变量 2006 例 *i pointer=20; -间接访问
直接访问与间接访问 ❖直接访问:按变量地址存取变量值 ❖间接访问:通过存放变量地址的变量去访问变量 例 i=3; -直接访问 指针变量 . . 2000 2004 2006 2005 整型变量i 10 变量i_pointer 2001 2002 2003 2000 3 例 *i_pointer=20; -间接访问 20

例 k=i; 一直接访问 k=*i pointer; 间接访问 . 2000 整型变量i 2001 10 2002 ←一整型变量k 2003 2004 ←一变量i pointer 2005 2000 指针变量 2006
指针变量 . . 2000 2004 2006 2005 整型变量i 10 变量i_pointer 2001 2002 2003 2000 整型变量k 例 k=i; -直接访问 k=*i_pointer; -间接访问 10 例 k=i; k=*i_pointer;

§8.2指针变量 指针变量与其所指向的变量之间的关系 i pointer 变量i i*i pointer 2000 3 &i pointer *i pointer i=3,◆*i pointer=-3 ★指针变量的定义 冬一般形式: [存储类型] 数据类型 *指针名; int *pl*p2. 铸示定义指针变量 标识符 指计变量sta撞d c瓶是*naMe:滋算苻 型 注意: 1、int*pl,*p2;与int*pl,p2; 2、指针变量名是plp2,不是*pl,*p2 3、指针变量只能指向定义时所规定类型的变量 4、指针变量定义后,变量值不确定,应用前必须先赋值
§8.2 指针变量 指针变量与其所指向的变量之间的关系 指针变量的定义 ❖一般形式: [存储类型] 数据类型 *指针名; 3 变量i 2000 i_pointer *i_pointer i *i_pointer &i i_pointer i=3; *i_pointer=3 3 变量i 2000 i_pointer *i_pointer i *i_pointer &i i_pointer i=3; *i_pointer=3 指针变量本身的存储类型 指针的目标变量的数据类型合法标识符 表示定义指针变量 不是‘*’运算符 例 int *p1,*p2; float *q ; static char *name; 注意: 1、int *p1, *p2; 与 int *p1, p2; 2、指针变量名是p1,p2 ,不是*p1,*p2 3、指针变量只能指向定义时所规定类型的变量 4、指针变量定义后,变量值不确定,应用前必须先赋值

指针变量必须先赋值,再使用 例 main( int i=10; int *p; 2000 整型变量i *p=i; 2001 10 printf"d",*p); 2002 2003 2004 ←一指针变量p 2005 随机 例 main( 2006 { int i=10; int *p; p=&i; *p=i; printfdp);
例 main( ) { int i=10; int *p; *p=i; printf(“%d”,*p); } 危险! 例 main( ) { int i=10; int *p; p=&i; *p=i; printf(“%d”,*p); } 指针变量必须先赋值,再使用. . 2000 2004 2006 2005 整型变量i 10 指针变量p 2001 2002 2003 随机

★指针变量作为函数参数 地址传递 特点:共享内存,“双向”传递 例将数从大到小输出 (main) swap(intx,inty) 2000 变量a {int temp; 2002 5 变量b temp-x; 9 2004 x-y; COPY (swap) 2006 ←一变量x y-temp; 2008 9 一变量y 值传递 200A 5 ZN ←一变量temp 5 mainO int a,b; scanf("%d,%d",&a &b); if(a<b)swap(a,b); printf("\n%d,%d n",a,b); 运行结果:5,9
指针变量作为函数参数——地址传递 特点:共享内存, “双向”传递 例 将数从大到小输出 . . 2000 2008 200A 2002 2004 2006 5 变量a 变量b (main) 9 变量temp 变量y 变量x (swap) 5 5 95 9 COPY swap(int x,int y) { int temp; temp=x; x=y; y=temp; } main() { int a,b; scanf("%d,%d",&a,&b); if(a<b) swap(a,b); printf("\n%d,%d\n",a,b); } 运行结果:5, 9 值传递

到 例将数从大到小输出 Ch9_3.c swap(int *pl,int *p2) int p; (man)】 p=*pl; 2000 整型变量a 9 2002 整型变量b *pl=*p2; 5 *p2=p; 地址传递 2004 指针pointer1 2000 2006 指针pointer_2 2002 main() 2008 { int a,b; COPY 200A (swap) int *pointer_1,*pointer_2; 2000 指针pl 200C ←一指针p2 scanf("%d,%d",&a,&b); 2002 200E 整型p pointer_1-&a;pointer_2-&b; 5 2010 if(a<b)swap(pointer_1,pointer_2); printf("\n%d,%d n",a,b); 运行结果:9,5
swap(int *p1, int *p2) { int p; p=*p1; *p1=*p2; *p2=p; } main() { int a,b; int *pointer_1,*pointer_2; scanf("%d,%d",&a,&b); pointer_1=&a; pointer_2=&b; if(a<b)swap(pointer_1,pointer_2); printf("\n%d,%d\n",a,b); } 运行结果:9,5 地址传递 . 2000 2008 200A 2002 2004 2006 200C 200E 2010 . 5 9 整型变量a 整型变量b (main) 指针pointer_1 指针pointer_2 2000 2002 (swap) 指针p1 指针p2 整型p 5 9 2000 2002 COPY 5 例 将数从大到小输出
按次数下载不扣除下载券;
注册用户24小时内重复下载只扣除一次;
顺序:VIP每日次数-->可用次数-->下载券;
- 《C语言程序设计》课程教学课件(PPT讲稿)C语言指针详解.ppt
- 《C语言程序设计》课程教学资源(讲义资料)C语言指针用法详解.pdf
- 《C语言程序设计》课程教学资源(讲义资料)C指针详解(经典详细).pdf
- 《C语言程序设计》课程教学资源(讲义资料)C语言中详解指针.doc
- 《计算机导论》课程教学课件(英文讲稿)7-a- Web.pdf
- 《计算机导论》课程教学课件(英文讲稿)6-b- The Internet.pdf
- 《计算机导论》课程教学课件(英文讲稿)6-a- The Internet.pdf
- 《计算机导论》课程教学课件(英文讲稿)5-b- LANS_WANS.pdf
- 《计算机导论》课程教学课件(英文讲稿)5-a- LANS_WANS.pdf
- 《计算机导论》课程教学课件(英文讲稿)4-a- File mangement.pdf
- 《计算机导论》课程教学课件(英文讲稿)4- operating system.pdf
- 《计算机导论》课程教学课件(英文讲稿)3-a-b-Computer Software.pdf
- 《计算机导论》课程教学课件(英文讲稿)2-b-Computer Hardware.pdf
- 《计算机导论》课程教学课件(英文讲稿)2-a-Computer Hardware.pdf
- 《计算机导论》课程教学课件(英文讲稿)1-b-Digital Data Representation.pdf
- 《计算机导论》课程教学课件(英文讲稿)1-a-Computer History+ Di Devices.pdf
- 《计算机导论》课程教学大纲 Computer Concepts.pdf
- 《微型计算机技术及应用》课程电子教案(PPT教学课件,共十五章,完整版).pptx
- 《微机技术及应用》课程教学大纲 Microcmputer Technology and aplications.doc
- 《C++面向对象程序设计》课程教学资源(PPT课件)Chapter 14 Polymorphism and Virtual Functions.ppt
- 《C语言程序设计》课程教学资源(讲义资料)C语言程序设计期中测试(函数,带答案).pdf
- 中国农业大学:《C语言程序设计》课程教学课件(PPT讲稿)第06章 指针.ppt
- 《C语言程序设计》课程教学资源(讲义资料)C语言程序设计期中测试(数组,带答案).pdf
- 《C语言程序设计》课程教学资源(讲义资料)C语言程序设计期中测试(分支与循环以前知识点,带答案).pdf
- 中国农业大学:《C语言程序设计》课程教学资源(试卷习题)C程序设计讲义与习题(含参考答案).pdf
- 《C语言程序设计》课程教学资源(讲义资料)考试知识点复习(C语言程序设计复习样题及部分解析).doc
- 中国农业大学:《C语言程序设计》课程教学课件(PPT讲稿)第09章 文件.ppt
- 中国农业大学:《C语言程序设计》课程教学课件(PPT讲稿)第08章 结构体.ppt
- 中国农业大学:《C语言程序设计》课程教学课件(PPT讲稿)第07章 预处理命令.ppt
- 中国农业大学:《C语言程序设计》课程教学课件(PPT讲稿)第05章 函数.ppt
- 中国农业大学:《C语言程序设计》课程教学课件(PPT讲稿)第04章 数组.ppt
- 中国农业大学:《C语言程序设计》课程教学课件(PPT讲稿)第03章 三种基本控制结构(下).ppt
- 中国农业大学:《C语言程序设计》课程教学课件(PPT讲稿)第04章 三种基本控制结构(上).ppt
- 中国农业大学:《C语言程序设计》课程教学课件(PPT讲稿)第02章 数据类型、运算符和表达式.ppt
- 中国农业大学:《C语言程序设计》课程教学课件(PPT讲稿)第01章 C语言概述(主讲:李辉).ppt
- 《数据结构》课程实验教学大纲 Data Structure.doc
- 《数据结构》课程设计教学大纲 Course Design of Data Structure.doc
- 《数据结构》课程教学大纲 Data Structure.doc
- 《数据结构》课程教学资源(作业习题)练习题及答案8.doc
- 《数据结构》课程教学资源(作业习题)练习题及答案6.doc