61.1指针和指针变量 ◆当声明了一个指针变量后,确定了三件事: ■变量本身在内存中所分配的地址和字节数,指针变 量总是占有4个字节; 系统允许的地址范围,以及地址单元内可以存放的 内容; ■指针变量可以进行的运算。 ◆访问指针变量时,只能看到地址。只有通过这 个地址,才能访问地址单元中的内容。这样的 访问称为对于内存单元的间接访问 2005-4-27 北京邮电大学电信工程学院计算机技术中心
2005-4-27 北京邮电大学电信工程学院计算机技术中心 -6- 6.1.1 指针和指针变量 当声明了一个指针变量后,确定了三件事: 变量本身在内存中所分配的地址和字节数,指针变 量总是占有4个字节; 系统允许的地址范围,以及地址单元内可以存放的 内容; 指针变量可以进行的运算。 访问指针变量时,只能看到地址。只有通过这 个地址,才能访问地址单元中的内容。这样的 访问称为对于内存单元的间接访问
612指针变量的声明和初始化 ◆指针变量声明的格式是 类型名〉*变量名1,*变量名2 ●例如 int米Va1,米Va2: char *ch1 *ch2 ◆指针变量在声明后,变量的值(地址)是随机 的。这样的指针变量是不能安全的使用的。因 为其中的随机地址完全可能不是有效的数据地 址 2005-4-27 北京邮电大学电信工程学院计算机技术中心
2005-4-27 北京邮电大学电信工程学院计算机技术中心 -7- 6.1.2 指针变量的声明和初始化 指针变量声明的格式是: <类型名> *变量名1, *变量名2; 例如: int *va1, *va2; char *ch1, *ch2; 指针变量在声明后,变量的值(地址)是随机 的。这样的指针变量是不能安全的使用的。因 为其中的随机地址完全可能不是有效的数据地 址
612指针变量的声明和初始化 ◆在声明指针变量时的“*”,有两个含义 ■声明变量va1、va2、ch1、ch2都是指针变量: 说明变量va1和va2的类型是(int*)型,即指向 整型变量的指针。Va1和va2所指定的地址单元中, 只能存放整型数据。类似地,ch1和ch2的类型是 (char*)型,它们所指定的地址单元中,只能存 放字符。 ◆指针变量都是有类型的.指针变量的类型就是 它所指定的地址单元中存放的数据的类型。 2005-4-27 北京邮电大学电信工程学院计算机技术中心
2005-4-27 北京邮电大学电信工程学院计算机技术中心 -8- 6.1.2 指针变量的声明和初始化 在声明指针变量时的“*”,有两个含义: 声明变量va1、va2、ch1、ch2都是指针变量; 说明变量va1和va2的类型是(int *)型,即指向 整型变量的指针。va1和va2所指定的地址单元中, 只能存放整型数据。类似地,ch1和ch2的类型是 (char *)型,它们所指定的地址单元中,只能存 放字符。 指针变量都是有类型的.指针变量的类型就是 它所指定的地址单元中存放的数据的类型
612指针变量的声明和初始化 ◆指针变量的初始化有两种方法:在声明时的初 始化和声明后的初始化 ◆声明指针变量时就进行初始化的格式是 类型名〉*指针变量名=&变量名; ■其中的变量名应该是已经声明或定义的同类型变量 名。例如: char chl=Y’,ch2=A char *pchl=&ch1, *pch2=&ch2 2005-4-27 北京邮电大学电信工程学院计算机技术中心
2005-4-27 北京邮电大学电信工程学院计算机技术中心 -9- 6.1.2 指针变量的声明和初始化 指针变量的初始化有两种方法:在声明时的初 始化和声明后的初始化。 声明指针变量时就进行初始化的格式是: <类型名> *指针变量名=&变量名; 其中的变量名应该是已经声明或定义的同类型变量 名。例如: char ch1=’Y’, ch2=’A’; char *pch1=&ch1, *pch2=&ch2;
612指针变量的声明和初始化 ◆也可以在声明指针变量后,用赋值的方式对它 们进行初始化。例如: inti1='Y,i2=’A"’; int *p1 1,*pi2; pil=&il; pi2=8i2; ◆没有初始化指针变量是不可以使用的。编译带 有这样的指针变量的程序,编译系统会给出警 告,而运行时会出现错误 2005-4-27 北京邮电大学电信工程学院计算机技术中心
2005-4-27 北京邮电大学电信工程学院计算机技术中心 -10- 6.1.2 指针变量的声明和初始化 也可以在声明指针变量后,用赋值的方式对它 们进行初始化。例如: int i1=’Y’, i2=’A’; int *pi1, *pi2; pi1=&i1; pi2=&i2; 没有初始化指针变量是不可以使用的。编译带 有这样的指针变量的程序,编译系统会给出警 告,而运行时会出现错误