9.5 指向指针类型的指针-高二《新概念C语言能力教程》同步教学课件 (电工版2020)

2023-06-12
| 21页
| 95人阅读
| 0人下载
精品

内容正文:

第9章 指针 第9章 指针 指针变量 野指针与空指针 指针变量作形参 指针作函数的返回值 地址参与运算 指针与一维数组 一维数组作形参 指针与二维数组++ 指向指针类型的指针 main函数和命令行参数 指向函数的指针变量 使用堆空间 典型命题 指向指针类型的指针 这节课我们讨论指向指针类型的指针。 3 字符串常量 字符串常量是用一对双撇号括起来的一串字符型字面量。 "Hello!"就是一个字符串常量。 字符串常量中的字符依次存储在地址连续的字符型存储单元中,并且这些存储单元位于一个只读的内存区域。只能读取不能修改的量称为常量。 整个字符串常量的值为存放其首字符的存储单元的地址。 如图所示字符串常量"Hello!"的值是char型地址0x0042109c。 字符串常量常用一个字符型指针变量保存(其首字符的地址)。 字符串常量是用一对双撇号括起来的一串字符型字面量。 "Hello!"就是一个字符串常量。 字符串常量中的字符依次存储在地址连续的字符型存储单元中,并且这些存储单元位于一个只读的内存区域。只能读取不能修改的量称为常量。 整个字符串常量的值为存放其首字符的存储单元的地址。 如图所示字符串常量"Hello!"的值是char型地址0x0042109c。 字符串常量常用一个字符型指针变量保存(其首字符的地址)。 4 char *str1 = "Hello!"; 这条语句中字符串常量"Hello!"的值是为存放其首字符的存储单元的地址,因此,它可以赋值给字符型指针变量str1。str1指向首字符的存储单元。 printf("%s", str1);的输出结果为Hello!; puts(str1);的输出结果为Hello!↙; *str1的值为'H',putchar(*str1)的输出结果为H; putchar(*(str1+4))的输出结果为o。 *str1='A';有逻辑错误,str1指向的存储单元只能读取不能写入。 这条语句中字符串常量"Hello!"的值是为存放其首字符的存储单元的地址,因此,它可以赋值给字符型指针变量str1。str1指向首字符的存储单元。 printf("%s", str1);的输出结果为Hello!; puts(str1);的输出结果为Hello!↙; *str1的值为'H',putchar(*str1)的输出结果为H; putchar(*(str1+4))的输出结果为o。 *str1='A';有逻辑错误,str1指向的存储单元只能读取不能写入。 5 例9-17 分析下面的程序。 程序中定义了一个字符型数组ch,并用字符串"Hello!"初始化,数组ch各数组元素的值如图所示。 字符串常量"Hello!"赋值给字符型指针str1后,如图所示。 字符型变量str赋值为数组ch,str指向了ch[0],puts(str)输出从str指向的字符开始的字符串,即输出结果Hello!↙。 *(str+1) = 'i'即ch[1] = 'i',str[2] = '!'也就是*(str+2) = '!'即ch[2] = '!',*(str+3) = '\0'即ch[3] = '\0',赋值之后 数组ch各数组元素的值如图所示。数组ch中的字符串变为"Hi!"。puts(ch)的输出结果为Hi!↙。 puts(str1)输出从str1指向的字符开始的字符串,即输出结果Hello!↙。 *str1='A';有逻辑错误,str1指向的存储单元只能读取不能写入。会出现非法内存访问错误。 6 分析语句char *a[3]; 语句中[ ]的优先级高于*,先分析(a[3]),定义一个长度为3的一维整型数组。数组元素的类型为char *,即字符型指针变量。 a[0] = "C";即字符型指针变量指向了字符串常量"C"。 char *a[3] = {"C", "C++", "Java"};定义并初始化了一维的字符型指针数组a,数组a的数组元素a[0]、a[1]和a[2]分别指向3个字符串常量,如图所示。 语句中[ ]的优先级高于*,先分析(a[3]),定义一个长度为3的一维整型数组。数组元素的类型为char *,即字符型指针变量。 a[0] = "C";即字符型指针变量指向了字符串常量"C"。 char *a[3] = {"C", "C++", "Java"};定义并初始化了一维的字符型指针数组a,数组a的数组元素a[0]、a[1]和a[2]分别指向3个字符串常量,如图所示。 7 分析程序 程序中puts会输出从实参地址标识的字符型存储单元开始的字符串。 a[0]的值为字符串常量"C"的首字符地址,因此输出为C↙; a[1]的值为字符串常量"C++"的首字符地址,因此输出为C++↙; a[0]的值为字符串常量"Java"的首字符

资源预览图

9.5 指向指针类型的指针-高二《新概念C语言能力教程》同步教学课件 (电工版2020)
1
9.5 指向指针类型的指针-高二《新概念C语言能力教程》同步教学课件 (电工版2020)
2
9.5 指向指针类型的指针-高二《新概念C语言能力教程》同步教学课件 (电工版2020)
3
9.5 指向指针类型的指针-高二《新概念C语言能力教程》同步教学课件 (电工版2020)
4
9.5 指向指针类型的指针-高二《新概念C语言能力教程》同步教学课件 (电工版2020)
5
9.5 指向指针类型的指针-高二《新概念C语言能力教程》同步教学课件 (电工版2020)
6
所属专辑
由于学科网是一个信息分享及获取的平台,不确保部分用户上传资料的 来源及知识产权归属。如您发现相关资料侵犯您的合法权益,请联系学科网,我们核实后将及时进行处理。