9.1.1变量、数组、函数与地址 >变量、数组与函数在内存自己的地址-通过地址来存取数据或指令的。 >函数定义后,该函数名对应了内存中某一段连续存储单元的起始地址, 该地址开始的区域里依次存放着构成本函数指令语句序列。 >不同的函数名对应了不同的起始地址,所获取的指令语句序列是不同的。 2000H., 1000H. 整型 3000H 变量x 2004H 短整型 西 36 变量 整型 数 数组 代 3024H 码 (a变量地址 b数组地址 (c函数地址 图9.1·变量、数组、函嫩的内存地址与表示
9.1.1 变量、数组、函数与地址 ➢ 变量、数组与函数在内存自己的地址-通过地址来存取数据或指令的。 ➢ 函数定义后,该函数名对应了内存中某一段连续存储单元的起始地址, 该地址开始的区域里依次存放着构成本函数指令语句序列。 ➢ 不同的函数名对应了不同的起始地址,所获取的指令语句序列是不同的
9.1.2变量的地址、变量的值 ①每个变量占用一段内存单元,变量的值放在该内存单元中。 ② 变量的地址:系统分配给变量的内存单元的起始地址一旦 确定之后不能修改。 ③变量的值:系统分配给变量的内存单元中的数据-程序执行 过程中可以修改。 ④说明:系统为不同类型的变量分配的空间大小也不同。 ① int整型变量一4个字节。 ② double双精度型变量一8个字节。 ③ char字符型变量一1个字节
① 每个变量占用一段内存单元,变量的值放在该内存单元中。 ② 变量的地址:系统分配给变量的内存单元的起始地址-一旦 确定之后不能修改。 ③ 变量的值:系统分配给变量的内存单元中的数据-程序执行 过程中可以修改。 ④ 说明:系统为不同类型的变量分配的空间大小也不同。 ① int整型变量——4个字节。 ② double双精度型变量——8个字节。 ③ char字符型变量——1个字节。 7 9.1.2 变量的地址、变量的值
9.2指针变量(定义、引用、作函数参数)-P179 >指针变量是一种特殊的变量一存放另一个变量的地址 (指向另一个变量) 9.2.1指针变量的定义 类型说明符 指针变量名; 指针变量所指向 变量的数据类型 米表示定义指针变量, 合法标识符 不是米乘法运算符 注意1:指针变量必须先定义后使用。 例1: ① int *p1,*p2; W定义指向int型变量的指针变量p1、p2 ② double *p3; ∥定义指向double型变量的指针变量p3 ③ char *p4; ∥定义指向char型变量的指针变量p4 注意2:指针变量只能指向它定义时约定的类型的变量。 8
9.2.1 指针变量的定义 注意1:指针变量必须先定义后使用。 例1: ① int *p1, *p2; //定义指向int型变量的指针变量p1、p2 ② double *p3; //定义指向double型变量的指针变量p3 ③ char *p4; //定义指向char型变量的指针变量p4 注意2:指针变量只能指向它定义时约定的类型的变量。 类型说明符 *指针变量名; *表示定义指针变量, 合法标识符 不是 * 乘法运算符 指针变量所指向 变量的数据类型 8 9.2 指针变量 (定义、引用、作函数参数)- P179 ➢ 指针变量是一种特殊的变量—存放另一个变量的地址 -(指向另一个变量)
9.2.2指针变量的引用 1、指针变量常用的运算符(&、 &-一取变量的地址 一取指针所指向变量的内容 2000 10 ←整型变量m 2000 10 2001 2004 2000 2002 2003 2004 2000 k-变量p 3888 指针变量 ① &m-变量m的地址(2000) ② p-指针变量,p的值是地址值(2000) ③ *p-指针p所指向的变量m,*p的值是m的值-数据10。 ④ &p-指针变量p自己占用内存的地址(2004)0 9
1、指针变量常用的运算符 ( &、 *) &- 取变量的地址 *-取指针所指向变量的内容 . . 2000 2004 2006 2005 10 整型变量m 变量 p 2001 2002 2003 2000 指针变量 ① &m - 变量m的地址(2000) ② p -指针变量,p的值是地址值(2000)。 ③ *p -指针p所指向的变量m,*p的值是m的值-数据10 。 ④ &p -指针变量p自己占用内存的地址(2004)。 9 9.2.2 指针变量的引用
2、指针变量的赋值方式: 1)指针变量定义时初始化赋值: 例1:inta,*p=&a;/指针变量p的初值是变量a的地址 注意1:a的声明一定要在p的声明之前。 注意2:int*p=NULL;/p不指向任何内存位置。 ∥NULL是标准库里定义的一个符号常量,值为0 例2: int m; int *p=&m;p的初值是&m-m的地址 int *q=p; /∥g的初值是p的值&m一m的地址 注意3:使用未初始化的指针变量是非常危险的。 ①int*p; ②*p=100;∥因为p存的是随机数,随机数表示的地址是否有效???? ∥结果无法预测!!
2、指针变量的赋值方式: 1)指针变量定义时初始化赋值: 例1:int a,*p=&a; //指针变量p的初值是变量a的地址 注意1:a的声明一定要在p的声明之前。 注意2:int *p=NULL; //p不指向任何内存位置。 // NULL是标准库里定义的一个符号常量,值为0 例2: int m; int *p = &m; //p的初值是&m –- m 的地址 int *q = p; //q 的初值是p的值&m—m 的地址 注意3:使用未初始化的指针变量是非常危险的。 ① int *p; ② *p=100; // 因为p存的是随机数,随机数表示的地址是否有效???? // 结果无法预测!!!