c语言中指针用法PPT

合集下载

C语言指针PPT

C语言指针PPT

8.1.2 指针变量的定义与初始化(续)
2.指针变量的初始化 指针变量初始化的一般形式为: 存储类型说明 数据类型 *指针变量名=初始地址值; 说明: (1)赋值号前面的部分为指针的定义,在定义的同时立刻赋值。 (2)初始地址值通常为如下形式:int x,*px=&x; (3)初始地址值最好不要为具体的十六进制的整数,因为不知该地址是否 可用。
8.1.3 指针的引用及运算
1.指针的引用 在引用指针变量时,可能有3种情况: (1)给指针变量赋值。如: pa=&a; 即把a的地址赋给指针变量pa,又称pa指向a。 (2)引用指针变量指向的变量。 如果已执行“pa=&a;”,即指针变量pa指向了整型变量a,则: printf("%d",*p); 其作用是以整数形式输出指针变量p所指向的变量的值,即变量a的值。
【导入案例:函数中多数据的返回】
定义学生信息管理系统中的某个子模块的功 能,实现从键盘输入一个班级中所有学生的某 门课程的成绩,通过调用函数实现统计,按规 定格式输出最高分、最低分、平均分,同时输 出优秀人数、良好人数、及格人数、不及格人 数以及所占比例。
分析
在前面我们所讲的函数中,只能有一个返 回值பைடு நூலகம்参数之间只能是实参的值传递给形参, 实现的是单向传递。程序中要求返回最高分、 最低分、平均分以及各分数段的人数及所占 比例等多个返回值。如何使函数能有多个返 回值呢?这就需要用到指针。
利用存储空间的地址,可以访问存储空间,从而获得存储空间
的内容。地址就好像是一个路标,指向存储空间。因此,又把地址
形象地称为指针。
8.1.1指针的概念(续)
1.地址及取地址运算符
地址 0012FF56H

全的C语言指针详解PPT课件

全的C语言指针详解PPT课件

在函数中使用指针参数
03
使用指针参数来访问和修改指针所指向的内容,需要使用“-
>”或“*”运算符。
05
指针的高级应用
指向指针的指针(二级指针)
定义与声明
二级指针是用来存储另一个指 针的地址的指针。在声明时, 需要使用`*`操作符来声明二级
指针。
初始化与使用
通过使用`&`操作符获取一个指 针的地址,并将该地址存储在 二级指针中。然后,可以通过 二级指针来访问和操作原始指
当使用malloc或calloc等函 数动态分配内存后,如果 不再需要该内存,必须使 用free函数释放它。否则, 指针将指向一个无效的内 存地址。
当一个指针在函数中定义 ,但该函数返回后仍然存 在并继续指向无效的内存 地址时,就会产生野指针 。
避免指针越界访问
总结词:指针越界访问是指试图访问数 组之外的内存,这是不安全的,可能会 导致程序崩溃或产生不可预测的结果。
指针与内存分配
通过指针来访问和操作动态分配的内存空间。指针可以 存储动态分配的内存地址,并用于读取和写入该地址中 的数据。
指向结构体的指针
01
定义与声明
指向结构体的指针是指向结构体类型的指针。在声明时,需要使用结
构体类型的名称来声明指向结构体的指针。
02 03
初始化与使用
通过使用`&`操作符获取结构体的地址,并将该地址存储在指向结构 体的指针中。然后,可以通过该指针来访问和操作结构体中的成员变 量。
```
பைடு நூலகம்
指向数组元素的指针
• 指向数组元素的指针是指向数组中某个具体元素的指针。通过将指针指向数组中的某个元素,可以访问该 元素的值。
• 指向数组元素的指针可以通过定义一个指向具体元素的指针来实现。例如,定义一个指向数组中第三个元 素的指针,可以使用以下代码

软件技术基础之指针和结构体课件ppt课件

软件技术基础之指针和结构体课件ppt课件


从右图可知,指 针变量和一般变量一 指针变量pi 变量地址(指针)
量 地 址
样,仅仅是变量旳内




容为变量地址旳变量
变量i
变量值

而已。这里变量和指针变量旳类型必须一致。
针 变

一般而言,指针变量只能存储某一种数据类型旳 变量旳地址,由此可将指针变量分为:整型指针变量、 实型指针变量和字符型指针变量等等,指针变量旳类 型表白了其指向旳存储单元中存储旳数据旳类型。
另一种引用旳形式: 构 造指针变量名 组员名 定义:struct data * today; today 为指向该构造旳指针
可见,“”和“·”操作符分别使用在用指向构造旳 指针和用构造变量来访问构造中旳数据项(组员)时。
例:构造例程。
结 构 体小结
构造体是C语言中旳一种复杂(构造)类型,它是一种 被命名为一种标识符旳多种变量旳集合。构造旳定义拟定了 构造变量或构造指针旳格式,构造是软件设计中实现数据抽 象旳基础。
3、程序中一旦定义了一种变量,该变量在内存中就将 占用一定旳存储单元。变量占用旳存储单元总是n(n>0) 个连续旳字节,开始字节旳地址,就是变量旳地址也可 称为该存储单元旳首地址。
二、指针旳基本概念:
指针就是变量旳地址。与此相应,在C语言中使
用一类专门旳变量即指针变量来存储变量旳地址。
所以,指针变量是存储地址数据旳变量。
四、指针旳“&”、“*”和赋值运算:
1 、& 取地址运算和 * 引用运算 取地址运算符&旳作用是取变量旳地址。如:
& i 表达求变量 i 旳地址。 引用运算符 * 旳作用是取指针指向变量旳内容。

C语言指针PPT

C语言指针PPT
2023
c语言指针ppt
目 录
• 指针简介 • 指针的语法 • 指针的使用 • 指针的注意事项 • 指针常见错误 • 案例分析
01
指针简介
什么是指针
指针是一种数据类型
指针是C语言中的一种特殊数据类型,可以存储内存地址。
内存地址
指针所存储的内存地址通常是指向一个变量或数据的内存位 置。
指针的基本概念
指向函数的指针
指向函数的指针是指针变量中存储 了一个函数的入口地址。
指向指针的指针
指向指针的指针是指针变量中存储 了一个指针变量的地址。
02
指针的语法
指针的声明
指针的声明方法
使用 * 符号声明一个指针变量,例如:int *p; 表示声明一个指向整数的指针 变量 p。
指针变量的命名规范
指针变量的名称通常以 p_ 或 ptr_ 开头,以区分普通变量和指针变量。
05
指针常见错误
指针丢失
指针丢失是指在程序中忘记初始化指针,导致指针指向一个 随机的内存地址。
解决办法:在使用指针前,始终要对其进行初始化,可以将 其指向NULL或者一个有效的内存地址。
野指针
野指针是指指向无效内存区域的指针,这个内存区域没有 分配或者已经释放了。
解决办法:在释放内存后,立即将指针置为NULL,避免 其成为野指针。
指针的初始化
指针的初始化方法
使用 & 符号取变量的地址,然后将地址赋值给指针变量,例如:int a = 10; int *p = &a; 表示将变量 a 的地址赋值给指针变量 p。
空指针的初始化
使用 NULL 关键字初始化指针变量,例如:int *p = NULL; 表示将指针变量 p 初始化为空指针。

C语言指针讲解ppt课件

C语言指针讲解ppt课件
scanf(″%d,%d″,&a,&b); p1=&a;p2=&b; if(a<b) {p=p1;p1=p2;p2=p;} printf(″a=%d,b=%d\n\n″,a,b); printf(″max=%d,min=%d\n″,*p1,*p2); }
运行情况如下: 5,9↙ a=5,b=9 max=9,min=5 当输入a=5,b=9时,由于a<b, 将p1和p2交换。交换前的情况见图 (a),交换后见图(b)。
地址。
10.2.2 怎样引用指针变量
在引用指针变量时,可能有三种情况: ⑴给指针变量赋值。如:
p=&a; ⑵引用指针变量的值。如:
printf(“%o”,p); ⑶引用指针变量指向的变量。
有关的两个运算符: (1) & 取地址运算符。 &a是变量a的地址。 (2) * 指针运算符 (或称“间接访问”运算符),*p
1 2 3 4 5 6 7 10 9 0↙
1 2 3 4 5 6 7 10 9 0
10.3.4 用数组名作函数参数
在第7章中介绍过可以用数组名作函数的参数。 如: void main()
{if(int arr[],int n); int array[10]; ┇ f(array,10); ┇ } void f(int arr[ ],int n)
{ ┇
}
例10.7 将数组a中n个整数按相反顺序存放
#include <stdio.h> void main() { void inv(int x[ ],int n);
int i,a[10]={3,7,9,11,0, 6,7,5,4,2};
printf(″The original array:\n″); for(i=0;i<10;i++) printf (″%d,″,a[i]); printf(″\n″); inv (a,10); printf(″The array has been in verted:\n″); for(i=0;i<10;i++) printf (″%d,″,a[i]); printf (″\n″); }

《C语言》指针--ppt课件全文

《C语言》指针--ppt课件全文

说明: 这种方法可能会破坏系统的正常
工作状态,因为temp是一个指针变量 b 59
但是在函数中并没有给temp一个确定 的地址,这样它所指向的内存单元是 不可预见的,而对*temp的赋值可能 带来危害
swap2 &a p1
&b p2 随机值 temp
5?
ppt课件
11
例 6. 3 ③ #include <stdio.h> void swap3( int *p1, int *p2) { int *p;
p
*p = 12 ; printf (“%d\n” , *p ) ;
对a 重新赋值 等价于 a=12
2. & 与*
p =ห้องสมุดไป่ตู้&a ;
1010 152 a
&*p &(*p) &a *&a *(&a) *p a
ppt课件
6
3. *与 ++ , - -
int a = 2 , b = 5 , c , d , *p ; (1) p = &a ;
② 形参表列: 即指针变量所指向的函数的形参表列 ③ 格式中的小括号不能省略 2. 应用 (1) 让指针变量指向函数 pt = add ; 因为函数名为函数的入口地址, 所以直接将函数名 赋给指针变量即可 (2) 使用指针变量调用函数 格式 : (*指针变量名) ( 实参表列)
ppt课件
17
例 求一维数组中全部元素的和
因此我们可以定义一个指针变量, 让它的值等于 函数的入口地址, 然后可以通过这个指针变量来调用 函数, 该指针变量称为指向函数的指针变量
ppt课件
16
指向函数的指针变量

C语言第8章 指针

C语言第8章 指针
数据类型 *函数名(形参表) { 函数体; }
例8-13 求最长字符串。
函数的返回值为指针,指针数组作函数参数。
8.5.2 执行函数的指针变量(P207)
P207 自学
8.6 指针应用举例 (P208)
P208 自学
8.7 动态内存管理 (P214)
动态分配存储空间
malloc( )函数 calloc( ) 函数
2. 变量地址示意图
变量 b 的地址:XXXX 变量b 4字节
例: float b; char c;
变量 c 的地址:XXXX 数组 a 的地址:XXXX
变量c 1字节
int a[2];
数组a 8字节
变量的地址示意图
8.1.1 指针和指针变量(P185)
指针
变量的存储地址称为该变量的指针。
指针变量
for (i=0;i<4;i++)
p[i]=&a[i*3]; printf ("%d\n",p[3][2]);
8.4 指针作为函数的参数 (P199)
指针变量 ① 形参是指针变量,对应实参是 变量地址 数组名 指针变量 ② 形参是数组名,对应实参是 变量的地址 数组名
8.4.1 指针作参数示例
例8-10 两数交换。形参为指针变量,实参为变量
char *p="abcd";
读下列程序段,分析输出结果
(1)
char s[]="ABCD";
char *p; for (p=s; p<s+4; p++) printf("%s\n",p);
读下列程序段,分析输出结果

67全国计算机等级考试实用应试教程二级C语言 第8章 指针PPT课件

67全国计算机等级考试实用应试教程二级C语言 第8章  指针PPT课件
9
(2)通过指针变量获得地址值 可以通过赋值运算,把一个指针变量中的地址
值赋给另一个指针变量,从而使这两个指针变量 指向同一地址。例如,若有以上定义,则语句:
p=q; 使指针变量p中也存放了变量k的地址,也就是 说指针变量p和q都指向了变量k。 注意:在赋值号两边指针变量的基类型必须相同。 (3)通过标准函数获得地址值 可以通过调用库函数malloc和calloc在内存中开 辟动态存储单元,并把所开辟的动态存储单元的 地址赋给指针变量。
10
8.3.2 给指针变量赋“空”值 除了给指针变量赋地址值外,还可以给指针变
量赋NULL值。 例如:p=NULL; NULL是在stdio.h头文件中的预定义符。NULL
的代码值为0,当p=NULL时,称p为空指针。因 为NULL的代码值是0,所以上面语句等价于:
p=’\0’; 或 p=0; 这时,指针p并不是指向地址为0的存储单元, 而是具有一个确定的值——“空”。企图通过一个 空指针去访问一个存储单元时,将会得到一个出 错信息。
(2)*&a的含义是a。因为先进行&a运算,得到a的 地址,再进行*运算,即&a所向的变量,因此*&a 等价于a。
(3)(*p)++相当于a++。注意括号是必要的,如果 没有括号,就成为*(p++),这时使指针变量本身 增1,并不是使p所指的存储单元的值增1。
13
2.通过指针引用存储单元 例如: int *p, k=4, q; p=&i; 则赋值语句 q=*p; 就是把p所指存储单元(k)的内容(整数4)赋 予变量q,这里的*p代表p所指向的变量i。因此, 上面的语句等价于 q=k;
2

C语言程序设计——指针(完整版)PPT教学课件

C语言程序设计——指针(完整版)PPT教学课件

说明:
(1)设有指向整型变量的指针变量p,若要把整型变量a 的地址赋予p,有以下方式: 指针变量初始化的方法: int a; int *p=&a; 赋值语句的方法: int a,*p; p=&a; (2)指针运算符*和指针变量说明中的指针说明符*不是 一回事。后者表示其后的变量是指针类型,前者则是一 个运算符用以表示指针变量所指的变量。
三、 指针变量作函数参数 C语言是通过传值将参数传递给函数的,对被调函数来说, 没有直接的方法来改变主调函数内的变量的值。 例:对两个整数按大小顺序输出。 #include<stdio.h> swap(int x,int y) {int t; t=x; x=y; y=t; } void main( ) {int a=3,b=5; if(a<b) swap(a,b); printf(“a=%d,b=%d \n”,a,b); }
说明:
(1)指针变量名的构成原则是标识符,前面必须有 “*”, 表示该变量的类型是指针型变量。 (2)在一个定义语句中,可以同时定义普通变量、数组、 指针变量。 (3)类型说明符说明的数据类型不是指针变量中存放的 数据的数据类型,而是它将要指向的变量或数组的数据 类型。因此,一个指针变量只能用来指向同种数据类型 的其他变量或数组,不能时而指向一个浮点型变量,时 而指向一个整型变量。
说明:
(3)如果已执行了语句p=&a; ,则: &*p:先进行*p的运算,即是变量a,再执行&运算, 即变量a的地址。因此&*p与&a相同。 *&a:先进行&a的运算,即得a的地址,再执行*运 算, 即&a所指向的变量,即变量a。 因此*&a与a相同。

C语言程序设计课件第06章数组、指针与字符串.ppt

C语言程序设计课件第06章数组、指针与字符串.ppt
pa+i)就是a[i]. –a[i], *(pa+i), *(a+i), pa[i]都是等效的。 –不能写 a++,因为a是数组首地址(是常量)。
17
指针数组
指 数组的元素是指针类型 针 例:Point *pa[2];
由pa[0],pa[1]两个指针组成
*i_pointer 3i
2000
9
指针变量的初始化
指 语法形式 存储类型 数据类型 *指针名=初始地址; 例:int a , *pa=&a;
针 注意事项
➢用变量地址作为初值时,该变量必须在指针初始化 之前已说明过,且变量类型应与指针类型一致。
➢可以用一个已赋初值的指针去初始化另一个指针变 量。
组 ➢ 数组下标从零开始。 ➢ 下标必须是整形表达式。 ➢ 数组元素可以在定义时直接给出初始值列表。 ➢ 数组元素作函数参数同简单变量作函数参数。 ➢ 数组名作函数参数传递的是地址值。 ➢ 二维数组在内存中按行存放。
4
对象数组
数 声明:
类名 数组名[元素个数];
组 访问方法:
数组名[下标].成员名
与!=的关系运算。

– 指向不同数据类型的指针,以及指针与一
般整数变量之间的关系运算是无意义的。
– 指针可以和零之间进行等于或不等于的关
系运算。例如:p==0或p!=0
16
指向数组元素的指针
指 声明与赋值
例:int a[10], *pa;
针 pa=&a[0]; 或 pa=a;
通过指针引用数组元素
C++语言程序设计
第六章 数组、指针与字符串
本章主要内容
数组 指针 动态存储分配 深拷贝与浅拷贝 字符串

大学C语言实用教程(课件)-第6章-指针

大学C语言实用教程(课件)-第6章-指针

int *p=&a;
// p指向a
printf("a=%p b=%p c=%p p=%p\n",&a,&b,&c,&p); printf("p=%p *p=%d\n",p,*p);
p--;
}
// p指向a前面的存储单元
printf("p=%p *p=%d\n",p,*p);
2. 指针与整数相加减 指针加减一个整数n可以使指针移动,可以访问新地址。
char c= 'A',*pc=&c; float a=3.0,*pa=&a;
指针变量指向变量示意图
pa FF74 FF70 FF71 FF72 FF73 FF74 a 3.0 FF75 FF76 FF77 FF78 pc FF7C FF79 FF7A FF7B c A FF7C
② 赋值方法 先定义指针,然后用赋值语句将所指变量的地址赋给它。例如 char c,*pc;
4. 两个同类型指针相减
x[0]
如果两个同类型指针之间所存储的数据的 x[2] 类型也与指针相同(通常是数组的情况),则相 减的结果是这两个指针之间所包含的数据个数。 x[3]
x[4]
x[1]
【例】两个同类型指针相减。 #include <stdio.h> void main() { float x[10]; float *p,*q; p=&x[2]; q=&x[8]; printf("q-p=%d\n",q-p); }
6.1.2 指针和指针变量
1.指针和指针变量的概念
变量的指针:该变量在内存中的地址。 指针变量:专门用来存放变量地址的特殊变量。 在不致引起混淆的情况下,把指针变量简称为指针。

精品-清华大学C语言课件 第13章01 结构体指针

精品-清华大学C语言课件 第13章01 结构体指针
struct Student* pStruct;/*定义结构体类型指针*/ pStruct=&student;/*指针指向结构体变量*/ printf("-----学生信息-----\n");/*消息提示*/ printf(“姓名: %s\n”,(*pStruct).cName);使用指针引用变量中的成员*/ printf("学号: %d\n",(*pStruct).iNumber); printf("性别: %s\n",(*pStruct).cSex); printf("年级: %d\n",(*pStruct).iGrade); return 0; }
【例13.2】 使用指向运算符引用结构体对象成员。 在本实例中,定义结构体变量但不为其进行初始化操作,使用指针指向结构体变量并为其成员进行赋值操作。
#include<stdio.h> #include<string.h>
struct Student/*学生结构*/ { char cName[20];/*姓名*/ int iNumber;/*学号*/ char cSex[3];/*性别*/ int iGrade;/*年级*/ }student;/*定义变量*/
pStruct ->成员名;
这种方法使用的是指向运算符,例如使用指向运算符引用一个变量的成员:
pStruct->iNumber=12061212;
假如student为结构体变量,pStruct为指向结构体变量的指针,可以看出以下三种形式的效果是等价的:
student.成员名 (*pStruct).成员名 pStruct->成员名
Display(student.fScore[0]);

C语言课件第9章

C语言课件第9章
第9章 指 针
9.1 9.2 9.3 9.4 9.5 9.6
地址、指针和变量 指针运算 指针与数组 函数与指针 程序综合举例 上机实训
汽摩计算机学校
第9章 指 针
【本章要点】 本章主要介绍指针的基本概概念,指针运算,指针与 数组,指针与函数等内容。指针是C语言的一个重要 概念,也是C语言的一个重要特色。正确灵活的运用 指针,可以使程序简洁、紧凑、高效;可以有效地表 示复杂的数据结构。可以说,不掌握指针就没有掌握 C语言的精华。
*(p--)相当于a[i--],先取p值作“*”运算,再使p自减。 *(++p)相当于a[++i],先使p自加,再作*运算。 *(--p)相当于a[--i], 先使p自减,再作*运算。
汽摩计算机学校
第9章 指 针
【例9.5】用上面介绍的四种不同方法访问数组元素。 #include<stdio.h> void main() { int a[5]={0,1,2,3,4}; int *p,i; for(i=0;i<5;i++) 程序中的四个输出是一 { 样的。程序输出如下: printf(“%d ”,a[i]); 0 0 0 0 printf(“%d ”,*(a+i)); 1 1 1 1 printf(“%d ”,p[i]); 2 2 2 2 printf(“%d ”,*(p+i)); 3 3 3 3 printf(“\n”); 4 4 4 4 } }
汽摩计算机学校
第9章 指 针
(3)指针的关系运算 运算条件:必须是指向同一数组的2个指针变量才能进行 关系运算。 运算作用:两个指针变量通过关系运算进行比较,主要 用于判断他们的前后位置关系。 例如:设如果pa和qa都指向同一个数组a, 则有:pa>qa、pa<qa、 pa>=qa、 pa<=qa、 pa==qa、 pa!=qa 说明:当pa所指元素在qa之前,则表达式“pa<qa”为真 (值为1); 当pa和qa都指向同一个元素时,表达式“pa==qa” 为真 (值为1)。
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
重点:
➢ 指针的概念 ➢ 指针运算; ➢ 内存操作函数和动态存储分配。
课堂时数:6—7学时 上机时数:2—3学时 课外上机时数:2—3学时
c语言中指针用法PPT
6.1 指针的概念
1. 什么叫指针
一个数据对象的内存地址称为该数据对象 的指针 。
指针可以表示各种数据对象,例如:简单 变量、数组、数组元素、结构体甚至函数。
换句话说:指针具有不同的类型,可以指向 不同的数据存储体。
c语言中指针用法PPT
例6-1 分析下面的变量说明语句和赋值表达式:
int *point1,a=123,b=567; double point2[20]; …… point1=&a;
➢ point1和point2都是指针;
➢ 执行point1=&a操作后,point1存放变量a的地 址,它指向变量a 的存储空间。如下图所示:
6.2 声明指针变量 1. 指针变量
所谓指针变量就是类型为指针类型的变量。
用变量说明语*<标识符1>,*<标识符2>,……, *< 标识符n>;
解释: ➢ 类型标识符:用来指明指针类型的基类型,可 以是基本类型,例如int,char,double等等,也可以 是结构类型,例如数组、结构体、文件等等。 ➢ 标识符:标识指针数据对象,被标识的对象可 以是基本变量、数组c语、言中结指针构用法体PPT变量、函数等。
第六章 指针
指针是C++ 提供的一种颇具特色的数据类 型,允许直接获取和操纵数据地址,实现动态 存储分配。
指针是C和C++的精华所在,也是C和C++的 一个十分重要的概念。
主要内容:
➢ 指针的概念; ➢ 指针数据对象及其定义;
➢ 指针运算;
➢ 指针数据对象的引c语用言中;指针用法PPT
➢ 利用指针实现动态存储分配(动态数组)
也即iptr指向整型变量i,对于iptr的引用(可 以表示成*iptr)也就是对i的引用。
5.几点说明
(1)标识符前面的“*”并不是名称的一部分, 而表示该数据对象的类型为指针类型,也即声 明该数据对象是指针类型数据对象。
c语言中指针用法PPT
(2)指针变量可以和其它变量在同一语句中声 明。
例如: double d1,*d2;
(3)指针变量只能存放相同基类型数据对象的 内存地址,换句话说,一个指针变量在任何时候 都只能指向同一基类型的数据对象。
这就是所谓“指针类型与实际存储的匹配” 问题 ,例如:
strcpy(s2,"abcd"); s3=s2;
s2,s3两者的关系如c语下言中图指针所用法示PPT :
s2
s3
abcd
s4是字符型指针数组,最多可以存放100个字 符串的指针(地址),也即每一个元素都可能指 向一个字符串,如下图所示:
c语言中指针用法PPT
可以看出,一个一维字符指针数组可以表 示一个n行m列的的文本,它是特殊的二维字符 数组。
point1 变量b的地址
b 567 c语言中指针用法PPT
2. 指针的作用
(1) 实现复杂的数据结构,例如数组、链表、 队列和堆栈等; (2)能方便地表示和处理字符串;
例如: char s1[20]={‘a’,’b’,’\0’},*sp1; sp1=s1;//s1和sp1都代表字符串 “ab”
(3) 实现动态存储分配;
<类型标识符> *
➢ 类型标识符,是指针类型的基类型,也即指针 所指向的数据对象的类型。 ➢ *,作用在各个标识符上,表示该标识符所标识 的变量是指针变量。
➢指针类型定义和指针变量声明是同时进行的。
例 6-2 分析说明语句:int *a,b;。 该语句既定义了整型指针int *,同时又声明了
整型指针变量a和整型c语变言中量指针b用。法PPT
(4) 在函数之间进行数据的双向传递。
将形参定义成指针类型,对应的实参必须是
某个数据对象的地址或首地址,也即采用传地址 的方式,这样就可以实现数据的双向传递。
3.指针类型
指针类型属于非标准类型,其取值是所表示
的数据对象的内存地址,所以其值域是内存地址
集。
c语言中指针用法PPT
指针类型用来定义各种类型的指针变量,例 如整型指针、字符指针等等。其语法如下:
4. 指针变量的初始化
我们可以在定义指针变量的同时给其赋初值, 指针的初值是某个数据对象的内存地址,也即使 得该指针指向对应的数据对象。
这一过程也称为建立指针。
例如: int i=10; int *iptr = &i;
c语言中指针用法PPT
上面的说明语句在声明指针变量iptr的同时即 赋予初值,其初值是i的地址。
point1 变量a的地址
a 123 c语言中指针用法PPT
➢ point2是数组名,又是指向数组第一个元素的 指针,如下图所示:
point2 point2数组的首地址
双精度型数组的存储空间
注意:指针中的内容是可以动态改变的,例如 point1原来指向变量a,当执行了point1 = &b操作
后,即指向变量b:
对于程序中所包含的大存储量的数据对象,
一般用预先定义的指针变量来表示,当实际使用
时才临时申请实际的存储空间,使用完毕立即释
放。
c语言中指针用法PPT
指针变量所占的内存空间与所表示的数据对
象的存储空间相比实在是微乎其微,因为它只是 用来存放对应空间的首地址,而不是存放数据本 身,所以可以节省大量的存储空间,提高内存空 间的利用率。
2.指针变量的作用域
指针变量也有全局和局部之分: 在函数外部声明的指针变量是全局的;在函 数内部声明的指针变量是局部于该函数的。
3.实例
例6-3 在函数中声明三个变量x,y,z,其中x、y是整 型指针,z是整型变量,对应的语句如下:
int *x, *y,z;
例6-4 分析和比较语句char s1,s2[100],*s3,*s4[100]; 所声明的四种不同数据对象。
c语言中指针用法PPT
上面的语句定义了四个变量:
s1是字符型变量,用来存放单个字符 ;
s2是字符数组,最多可以存放100个字符;
s3是字符型指针变量,用来存放字符数据的内存地 址或字符串的首地址。如果其中存放的是字符串的 首地址,则它指向一个字符串,或者说它代表一个 字符串; 例如,执行如下的操作序列后,则s2等价于s3:
相关文档
最新文档