- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
程序填空 int *a,c; c=90; …… /*不直接对c赋值,使得下面语句 输出的值是100 */ printf("%d\n",c);
a=&c; *a=100;
二、数据类型 2.6 指针变量 2.6.1 指针变量 2.6.2指针指向的变量 指针运算符 * 假设u是指针变量,则*u是u所指 向的变量。 前面有类型说明时,*c是说明变 量c是一个指针变量;其他情况下, *c表示c指向的变量。
二、数据类型 2.5变量 2.5.1变量概述 2.5.2变量定义 变量在使用之前必须先定义。 变量定义时规定了变量的数据类 型。 变量定义时其值是随机的值。 定义变量时可以同时赋初值。 变量定义后在释放前变量空间一 直不变。 变量的地址是一个常量。
int a; a=10; a=520;
2006 10 520
说出下列语句的错误: int a;a=malloc(20);
int *a;a=(char *)malloc(2);
二、数据类型 2.6 指针变量 2.6.1 指针变量 2.6.2指针指向的变量 可以让一个指针变量不指向任何 变量,也不指向任何动态分配的内 存空间。 char *p=NULL;
NULL的值为0 地址为0的内存空间在计算机中 不用。
A)Y B)Y C)N D)N E)Y F)N G)Y H)Y I)Y J)N K)N L)N
二、数据类型 2.6 指针变量 2.6.1 指针变量 指针变量分成很多种类: 整型指针变量,只能存放整型变 量的指针; 实型指针变量,只能存放实型变 量的指针; int *a;定义整型指针变量 float *b;定义实型指针变量 当指针变量u中存放变量a的地址 时,称为u指向a。
为什么以下语句是错误的? int *a; *a=1;
int *a; 这时a中有一个不定的值 因此*a是一个未知的内存单元 *a=1将会带来不可预知的后果
a 5200
5200 1
二、数据类型 2.6 指针变量 2.6.1 指针变量 2.6.2指针指向的变量 指针运算符 * 假设u是指针变量,则*u是u所指 向的变量。 前面有类型说明时,*c是说明变 量c是一个指针变量;其他情况下, *c表示c指向的变量。
例 已经定义: int a,b,c,*d; d=&b; 这时d指向b 如果 d=&a; 这时d就指向了a
二、数据类型 2.6 指针变量 2.6.1 指针变量 指针变量分成很多种类: 整型指针变量,只能存放整型变 量的指针; 实型指针变量,只能存放实型变 量的指针; int *a;定义整型指针变量 float *b;定义实型指针变量 当指针变量u中存放变量a的地址 时,称为u指向a。
二、数据类型 2.5变量 2.5.1变量概述 2.5.2变量定义 变量在使用之前必须先定义。 变量定义时规定了变量的数据类 型。 int a; a是整型变量,给a分配2个 字节的空间 float b; b是实型变量,给b分配4 个字节的空间 main() { int a; /* 给a变量分配一段能放整 数的空间 */ a=10; /*把10放入变量空间a */ printf("%d\n",a); }
Байду номын сангаас
以下程序能不能将x,y的值互换? int *a,x=50,y=70; a=&x; *a=y; a=&y; *a=x;
不能 x,y都是70
二、数据类型 2.6 指针变量 2.6.1 指针变量 2.6.2指针指向的变量 可以让一个指针变量指向一段动 态分配的内存空间。 int *a,*b; char *c; a=(int*)malloc(2); b=(int *)malloc(10); c=(char *)malloc(1);
二、数据类型 比如 2.6 指针变量 int a,*b,c; 2.6.1 指针变量 定义了3个变量a,b,c,其中b是指 指针变量是一种存放地址(指针) 针变量。 的变量, 注意这里定义的变量是b,而不 是*b。 指针变量的定义格式 数据类型 *变量名;
二、数据类型 假如语句int a,*b,c; 2.6 指针变量 执行后a,b,c变量空间的分配地址 2.6.1 指针变量 分别是6300、6408、6512 指针变量是一种存放地址(指针) 执行以下程序段时,内存中的数 的变量, 据是如何变化的? int a,*b,c; 指针变量的定义格式 b=&c; 6300 25 数据类型 *变量名; c=20; a=c+5; 6408 6300 6512 b=&a; c=30; 6512 30 20
二、数据类型 2.6 指针变量 2.6.1 指针变量 2.6.2指针指向的变量 指针运算符 * 假设u是指针变量,则*u是u所指 向的变量。
例: int a,b,*c; c=&a; *c=5; /* 相当于a=5*/ c=&b; *c=10; /*相当于b=10*/ a=*c-2;
二、数据类型 2.6 指针变量 2.6.1 指针变量 2.6.2指针指向的变量 指针运算符 * 假设u是指针变量,则*u是u所指 向的变量。 前面有类型说明时,*c是说明变 量c是一个指针变量;其他情况下, *c表示c指向的变量。
6300 6301 6302 6303 6304 6305 6306 6307
5. E16
二、数据类型 2.5变量 2.5.1变量概述 2.5.2变量定义 变量在使用之前必须先定义。 变量的定义: 从内存中找出一段不在使用的空 间(这个过程叫做分配),作为这 个变量的空间。
比如下面的程序是错误的 main() { a=10; /*a在内存中什么地方?10 要放在哪个存储空间?*/ printf("%d\n",a); }
二、数据类型 2.5变量 2.5.1变量概述 2.5.2变量定义 变量在使用之前必须先定义。 变量定义时规定了变量的数据类 型。 变量定义时其值是随机的值。 如int a; 计算机把某一空间分配给a,但 并不清除原先的数。
4122
二、数据类型 2.5变量 2.5.1变量概述 2.5.2变量定义 变量在使用之前必须先定义。 变量定义时规定了变量的数据类 型。 变量定义时其值是随机的值。 定义变量时可以同时赋初值。 如 float b=3.5; 相当于 float b; b=3.5;
二、数据类型 2.5变量 2.5.1变量概述 内存空间,存储空间
内存的每一个字节都有一个编号 ,称为字节的地址。
0 1 2 3
二、数据类型 2.5变量 2.5.1变量概述 一段内存空间的首地址 址
一段内存空间的第一个字节的地
1032 1033 1034 1035
二、数据类型 2.5变量 2.5.1变量概述 什么是变量?变量代表了一段存 储空间,是存储空间的名字。
经过以下语句以后,指针变量d 指向哪个变量? int a,b,c,*d,*e; a=1; d=&b; e=&a; b=a+4; d=e;
d指向变量a.
二、数据类型 2.6 指针变量 2.6.1 指针变量 指针变量分成很多种类: 整型指针变量,只能存放整型变 量的指针; 实型指针变量,只能存放实型变 量的指针; int *a;定义整型指针变量 float *b;定义实型指针变量 当指针变量u中存放变量a的地址 时,称为u指向a。
二、数据类型 2.6 指针变量 2.6.1 指针变量 2.6.2指针指向的变量 2.6.3 指针的指针 有一种指针变量,专门存放指针 变量的地址,称为指针的指针。 定义格式: 数据类型 **变量名 ; 如int a,*u,**y; *y代表y所指向的变量(上一级 的指针变量) **y相当于*(*y)
比如double e; 该语句从内存分配一段空间, 该段空间的名字叫e, double说明了空间的长度能放一 个double数.
又如: int x;
4012 4013
6300 6301 6302 6303 6304 6305 6306 6307
二、数据类型 2.5变量 2.5.1变量概述 这段空间的第一个字节的地址( 首地址)称为该变量的地址。 记为&e
例: int a,b,*c; c=&a; *c=5; /* 相当于a=5*/ c=&b; *c=10; /*相当于b=10*/ a=*c-2;
二、数据类型 2.6 指针变量 2.6.1 指针变量 2.6.2指针指向的变量 指针运算符 * 假设u是指针变量,则*u是u所指 向的变量。 前面有类型说明时,*c是说明变 量c是一个指针变量;其他情况下, *c表示c指向的变量。
二、数据类型 2.6 指针变量 2.6.1 指针变量 指针变量分成很多种类: 整型指针变量,只能存放整型变 量的指针; 实型指针变量,只能存放实型变 量的指针; int *a;定义整型指针变量 float *b;定义实型指针变量
判断题: char *c; 则c的值只能是字符。
错, c的值只能是字符型变量的地址
指针变量定义时也可以初始化。 float x=5,*u=&x; 相当于 float x,*u; x=5; u=&x;
二、数据类型 2.6 指针变量 2.6.1 指针变量 2.6.2指针指向的变量 指针运算符 * 假设u是指针变量,则*u是u所指 向的变量。
假设指针变量u的值是变量t的地 址,即u指向变量t, 则*u就是u所指向的变量,即t。
二、数据类型 2.6 指针变量 2.6.1 指针变量 指针变量分成很多种类: 整型指针变量,只能存放整型变 量的指针; 实型指针变量,只能存放实型变 量的指针; int *a;定义整型指针变量 float *b;定义实型指针变量
例 已经定义: int a,b,c,*d,*e; char f,g,*h; float i,j,*k,*m; 判断下列赋值语句哪些是正确的 A) g=f; B) k=m; C) d=c; D) d=&j; E) h=&g; F) i=&m; G) d=&b; H) m=&j; I) m=&i; J) &g=h; K) a=&e; L) d=&e;