C语言教案-第十五周

合集下载
相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

第8章指针

本节题目指针与字符串

1:本节主要目的

1.1教学目的:1、了解字符串的表示形式

2、了解字符串指针作函数参数

1.2教学内容:1、字符串的表示形式

2、字符串指针作函数参数

1.3教学重点:1、了解字符串指针作函数参数

1.4教学方法:讲授+演示

1.5学习方法:听课+笔记+练习

2:引入本课内容: [5分钟]

在上一节课,学习了指针与一维数组的各种情况,那么,指针能否指向一个字符串呢?如果可以,是一种什么样的情况呢?今天这节课来学习指针与字符串。

3:课程知识点讲解:

具体知识点1:字符串的表现形式[15分钟]

C语言中,有两种方式可以实现字符串:字符数组、字符指针

案例讲解1:用字符数组存放一个字符串,然后输出该字符串。

main()

{ static char string[]=“I love China!”;

printf(“%s\n”,string);

}

程序说明:string是数组名,代表字符数组的首地址。数组可以用下标访问,也可以用指针访问。如string[4]表示一个元素值是字符v,也可以

用*(string+4)来访问,string+4是指向字符v的指针。

案例讲解2:用字符串指针指向一个字符串,然后输出该字符串。

main()

{ char *string=“I love China!”;

printf(“%s\n”,string);

}

程序说明:string是一个指针变量,“I love China!”是一个字符串常量。语句char *string=“I love China!”;等价于char *string;string=“I love China!”它把字符串常量的首地址赋给指针string。不能理解为把字符串常量赋给指针变量。

char *string=“I love China!”;

string 字符串

从以上两个例子中,可以看到:

1、字符数组和字符指针的概念不同。

2、字符指针指向字符串,而C语言中,字符串按数组方式处理,因此,字符数

组和字符指针的访问方式相同。例如,均可以使用%s格式控制符进行整体输

入输出。但应注意,如果不是字符数组,而是整型、实型等数字型数组,不

能用%s,只能逐个元素处理。

案例讲解3:将字符串a复制到字符串b。(以下用两种方法实现)

方法一: main()

{ char a[]=“I am a boy.”;

char b[20];

int i;

for(i=0;*(a+i)!=’\0’);i++)

*(b+i)=*(a+i);

*(b+i)=’\0’;

printf(“string a is:%s\n”,a);

printf(“string b is:”);

for(i=0;b[i]!=’\0’;i++)

printf(“%c”,b[i]);

printf(“\n”);

}

方法二: main()

{ char a[]=“I am a boy.”,b[20],*p1,*p2;

int i;

p1=a;p2=b;

for(;*p1!=’\0’;p1++,p2++)

*p2=*p1;

*p2=’\0’;

printf(“string a is:%s\n”,a);

printf(“string b is:”);

for(i=0;b[i]!=’\0’;i++)

printf(“%c”,b[i]);

printf(“\n”);

}

在此案例中,程序完成了两项工作:一是把p1指向的源字符串复制到p2所

指向的目标字符串中,二是判断所复制的字符是否为’\0’,若是则表明源字

符串结束,不再循环。否则,p2和p1都加1,指向下一字符。

具体知识点2:字符串指针作函数参数[30分钟]

将一个字符串从一个函数传递到另一个函数,可以使用传地址的方式,即用字符数组名或字符指针变量作参数。有以下四种情况:

实参形参

1 数组名数组名

2 数组名字符指针变量

3 字符指针变量字符指针变量

4 字符指针变量数组名

案例讲解:用函数调用实现字符串的复制。

(1)用字符数组作参数

void copy_string(char from[], char to[])

{ int i=0;

while(from[i] != '\0')

{ to[i] = from[i]; i++; }

to[i] = '\0'; }

main ()

{ char a[] = "I am a teacher.";

char b[] = "you are a student.";

printf("string_a =%s\n string_b =%s\n", a,b);

copy_string(a,b);

printf("string_a =%s\n string_b =%s\n", a,b);

}

使用字符指针可以将main()函数改写为:

main ()

{ char *a = "I am a teacher.";

char *b = "you are a student.";

printf("string_a =%s\n string_b =%s\n", a,b);

copy_string(a,b);

printf("string_a =%s\n string_b =%s\n", a,b);

}

(2)形参用字符指针。

void copy_string (char *from, char *to)

{ for(; *form != '\0'; from++, to++)

*to = *from;

*to = '\0'; }

main ()

{ char *a = "I am a teacher.";

相关文档
最新文档