第10章字符串10.1字符串常量10.2 如何字符串变量10.3字符串的输入输出10.4字符指针与字符串10.5 字符串处理函数10.6 程序举例
10.1 字符串常量 10.2 如何字符串变量 10.3 字符串的输入输出 10.4 字符指针与字符串 10.5 字符串处理函数 10.6 程序举例 第10章 字符串
字符指针变量与字符串一P2251、用数组实现字符串的访问stTst[0]例1:st[1]D#include<stdio.h>st[2]2st[3]intmain()0st[4]YV3st[5]echar st[]="I love China!"st[6]printf("%s(n",st);I love China!st+7Cst[7]printf("%s(n", st+7);China!st[8]hreturn O;ist[9]8了st[10]nst[11]a!st[12]10st[13]
字符指针变量与字符串—P225 1、用数组实现字符串的访问
字符串的处理指针变量与字符串2、用字符指针实现例2:①#include<stdio.h>②int main()③1char*p="this is a book";④//p是指针变量,字符串首地址赋给ps?printf("%s\n",p);//整体thisisabookOP=p+10;/ /重新给指针变量P的赋值7printf("%sln",p);book8return O;91注意:C语言允许将字符串常量赋给字符指针,因为字符串常量有确定的地址。注意:以下代码是错误的1)char*st;//字符指针st的值是随机数gets(st);//错误--给随机数表示的地址存入信息原因:指针变量st未初始化,st存储的是一个随机地址数据,程序无法正常运行
例2: ①#include<stdio.h> ②int main() ③ { char *p="this is a book"; ④ //p是指针变量,字符串首地址赋给ps ⑤ printf("%s\n" ,p);//整体引用字符串 ⑥ p=p+10;//重新给指针变量 p 的赋值 ⑦ printf("%s\n" ,p); ⑧ return 0; ⑨ } 注意:C语言允许将字符串常量赋给字符指针,因为字符串常量有确定的 地址。 注意:以下代码是错误的: ① char *st;//字符指针st的值是随机数 ② gets(st);//错误-给随机数表示的地址存入信息 原因:指针变量st未初始化,st存储的是一个随机地址数据,程序无法正 常运行。 2、用字符指针实现 字符串的处理-指针变量与字符串
3、指针变量使用注意事项“野指针”操作:如果一个指针没有指向一个有效内存就被引用,则被称为野指针”操作或空指针赋值?野指针操作尽管编译时不会出错,但很容易引起程序运行时表现异常,甚至导致系统崩溃。例3:①char *ps,st[8];②scanf("%s"ps);//错--野指针操作,ps没有指向有效内存ps=st;//对--ps指向数组st所对应内存单元的首地址3
3、指针变量使用注意事项 如果一个指针没有指向一个有效内存就被引用,则被称为 “野指针”操作或空指针赋值。 野指针操作尽管编译时不会出错,但很容易引起程序运行 时表现异常,甚至导致系统崩溃。 例3: ①char *ps, st[8]; ② scanf ( %s ,ps); //错-野指针操作,ps 没有指向有效内存 ③ ps = st; //对-ps指向数组st所对应内存单元的首地址
“野指针”为什么赋值会给程序运行带来极大的危险4指针ps所占内存随机值001-正好是系统程序区地址001char*ps;*ps ="abc";极其危险!X001再次提醒:指针变量只有与有效内存建立联系以后才可使用,否则将造成程序运行异常,基至导致系统死机!值"abc”5/10
再次提醒: 指针变量只有与有效内存建立联系以后才可使用,否 则将造成程序运行异常,甚至导致系统死机! 5/10