
第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#includest[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②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 ②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

字符数组一关系指针变量、字符串、例4:char *p, s[20];①p中可以存放字符串常量的首地址。S数组由若干元素组成,每个元素放一个字符。p="Ilove China!";ⅡIp是字符型指针变量,字符串常量在内存中有存储地址(X)s="I love China!":Ils是数组名一地址常量,不能改变3字符指针要p接受输入字符串时,必须先开辟存储空间例7:char *p,s[10];例5:char s[10];p=s;scanf("%s",s);Vscanf ("%s"p);例6:char*p;//p的值无效scanf("%s", p);(x--给无效地址输入值
例4: char *p,s[20]; ① p 中可以存放字符串常量的首地址。 s 数组由若干元素组成,每个元素放一个字符。 ② p= I love China! ; () // p是字符型指针变量,字符串常量在内存中有存储地址 s= I love China! ; () // s 是数组名—地址常量,不能改变 ③ 字符指针要p接受输入字符串时,必须先开辟存储空间。 指针变量、字符串、字符数组—关系

例:利用字符指针实现字符串的逆序执行过程演示char s[20l,ch,*p,*qgets (s);交换10p=s;q=p+strlen(s)-1End
'I' ' ' 'L' 'o' 'v' 'e' ' ' 'C' 'h' 'i' 'n' 'a' '!' \0

例:利用字符指针实现字符串的逆序。#include#includeint main ()char s[20], ch, *p, *q6gets(s);//读取一个字符串7//p指向字符串的首地址p=s;OOEEBEEq=p+strlen(s)-1;/lq指向字符串的末地址while (p<q)ch=*p;*p=*g;*q=ch;//交换p和q各自指向的字符p++;q--;//移动指针运行结果:abcdefprintf ("%sln", s);fedcbareturn O;

下课了。。研究mrling休息一会儿。。e ngre moae ta keO
下课了。 休息一会儿