2、整体引用 「案例9.91采取整体引用的办法,改写案例9.81。 #include "stdio.h" 系统首先输出string指向的当前字 符,然后自动使string+I(不是 #include "conio.h" string++),指向下一个字符;重复上 void mainO) 述过程,直至遇到?0。 char *string ="I love Beijing."; printf("%sn",string); getch(); 思考:重复上述orintf(),输出结果如何? 2024/10/28 6
2024/10/28 6 2、整体引用 [案例9.9] 采取整体引用的办法,改写[案例9.8]。 #include "stdio.h" #include "conio.h" void main() { char *string = ”I love Beijing.”; printf(“%s\n”, string); getch(); } 思考:重复上述printf( ),输出结果如何? 系统首先输出string指向的当前字 符,然后自动使string+1(不是 string++),指向下一个字符;重复上 述过程,直至遇到’\0’
3、字符指针变量与字符数组之比较 (1)存储内容不同 字符指针变量,存储的是字符串首地址;字符数 组,存储的是字符串本身(数组名表示字符串首地址)。 (2)字符指针变量的值,是可以改变的;数组名代 表数组的起始地址,是一个常量,是不能被改变的。 2024/10/28 7
2024/10/28 7 3、字符指针变量与字符数组之比较 (1)存储内容不同 字符指针变量,存储的是字符串首地址;字符数 组,存储的是字符串本身(数组名表示字符串首地址)。 (2)字符指针变量的值,是可以改变的;数组名代 表数组的起始地址,是一个常量,是不能被改变的
(3)赋值方式不同 char *pointer,char array[20]; pointer ="This is a example."; /*合法*/ char array ="This is a example."; /*非法*/ 2024/10/28 8
2024/10/28 8 (3) 赋值方式不同 char *pointer, char_array[20]; pointer = “This is a example.”; /*合法*/ char_array = "This is a example."; /*非法*/
9.4.2字符串指针作函数参数 [案例9.10]编写1个自定义函数void string copy((char *str from,char*str to),实现字符串的复制。 #include "stdio.h" #include "conio.h" void string_copy(char *str_from,char *str_to) 循环体为空语句 inti=0; for(;(*(str_to+i)=*(str_from+i))!=\0';++) 先复制、后判断。’0复制吗? 2024/10/28 9
2024/10/28 9 9.4.2 字符串指针作函数参数 [案例9.10] 编写1个自定义函数void string_copy(char *str_from, char *str_to),实现字符串的复制。 #include "stdio.h" #include "conio.h" void string_copy(char *str_from, char *str_to) { int i = 0; for(; ( *(str_to + i) = *(str_from + i)) != '\0'; i++) ; } 循环体为空语句 先复制、后判断。’\0’ 复制吗?
void mainO char array_str1[20]="I am a teacher."; char array_str2[20; 数组名作实参 string_copy(array_str1,array_str2); printf("array_str2=%s\n",array_str2); getch(); [返回] 2024/10/28 10
2024/10/28 10 void main() { char array_str1[20] = "I am a teacher."; char array_str2[20]; string_copy(array_str1, array_str2); printf("array_str2 = %s\n", array_str2); getch(); } [返回] 数组名作实参