第十章指针
第十章 指针
第一节指针的基本概念 1.指针—变量的地址 当C源程序在编译时,编译程序对遇到的变 量分配连续的内存单元
第一节 指针的基本概念 1.指针——变量的地址 当C源程序在编译时,编译程序对遇到的变 量分配连续的内存单元
例:有变量定义语句如下 short a=3: long b=5; float c 编译系统给变量分配的存储空间如下: 5001 5002 3 short型变量a 5003 5004 long型变量b 50055 5006 5007 5008 float型变量c 5009 5010 501 5012
5011 5003 5004 5005 5006 5007 5008 5009 5010 5002 5001 5012 例: 有变量定义语句如下: short a=3;long b=5;float c; 编译系统给变量分配的存储空间如下: 5011 5003 5004 5005 5006 5007 5008 5009 5010 5002 5001 3 5 short型变量a 5012 long型变量b float型变量c
注意 C语言规定:如果一个变量占用一个字节时,该字 节的地址就是该变量的地址;如果变量用连续的多 个字节,那么第一个字节的地址就是该变量的地址 变量、数据类型和地址对照表 变量名 数据类型 地址 a short 5001 long 5003 C t float 5007
注意: C语言规定:如果一个变量占用一个字节时,该字 节的地址就是该变量的地址;如果变量用连续的多 个字节,那么第一个字节的地址就是该变量的地址. 变量、数据类型和地址对照表 变量名 数据类型 地址 a b c short long float 5001 5003 5007
a→500l 5002 3 b→5003 5004 5005 中8若运行时执行语句: c=a+b 5006 C→5007 5008 5009 8 5010 5011 5012
5011 5003 5004 5005 5006 5007 5008 5009 5010 5002 5001 5012 35 abc 若运行时执行语句: c=a+b; 5001 3 5003 5 + 8 5007 8
2.指针变量用于存放地址的变量 直接访问:通过变量名直接使用变量 间接访问:将变量的地址存放到另一个“特殊”的 变量中,通过该变量来存取变量的值 地址—指针 “特殊”的变量—指针变
2.指针变量——用于存放地址的变量 直接访问:通过变量名直接使用变量 间接访问:将变量的地址存放到另一个“特殊”的 变量中,通过该变量来存取变量的值 地址——指针 “特殊”的变量——指针变 量
C程序中,变量的值是通过运算符“&” 来得到,它的运算对象是变量或数组元素, 得到的结果是数组元素的地址 如:inta,b[10]; &a;/*得到变量a的地址*/ 匙b[5];/*得到数组元素b[5]的地址*
C程序中,变量的值是通过运算符“&” 来得到,它的运算对象是变量或数组元素, 得到的结果是数组元素的地址 如: int a,b[10]; &a; /*得到变量a的地址*/ &b[5]; /*得到数组元素b[5]的地址*/
第二节指针变量的定义、引用及运算 1.指针变量的定义与初始化 数据类型*指针变量名 说明: (1)与其他变量定义一样,可以一次定义多个 指针变量并赋初值 (2)“数据类型”指该指针变量用于存放何种数扌 类型的地址
第二节 指针变量的定义、引用及运算 1.指针变量的定义与初始化 数据类型 *指针变量名 说明: (1)与其他变量定义一样,可以一次定义多个 指针变量并赋初值 (2)“数据类型”指该指针变量用于存放何种数据 类型的地址
说明: (3)定义指针变量时,指针变量名前必须有一个 *”,作为定义一指针变量的标志 (4)初值形式: 如: float a,f1[10]; float*p1&a;/*定义一个指针变量pl, p1指向a*/ f1oat*p2=&f1[8];/*定义一个指针变量p2, p2指向f1[8]*/ float*p3=f1;/*定义一个指针变量p3 p3指数组向f1第一个元素*
说明: (3)定义指针变量时,指针变量名前必须有一个 “*”,作为定义一指针变量的标志 (4)初值形式: 如: float a,f1[10]; float *p1=&a; /*定义一个指针变量p1, p1指向a*/ float *p2=&f1[8]; /*定义一个指针变量p2, p2指向f1[8]*/ float *p3=f1; /*定义一个指针变量p3, p3指数组向f1第一个元素*/
2.指针变量的引用方式 1)给指针变量赋值 指针变量名=地址表达式 如:inta,*p; p=&a;/*定义一个指针变量p,指向变量a*/
2.指针变量的引用方式 1)给指针变量赋值 指针变量名=地址表达式 如: int a,*p; p=&a; /*定义一个指针变量p,指向变量a*/