1 / 14
文档名称:

专升本 C语言课件 C() 数组.ppt

格式:ppt   大小:127KB   页数:14页
下载后只包含 1 个 PPT 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

专升本 C语言课件 C() 数组.ppt

上传人:顾生等等 2018/4/18 文件大小:127 KB

下载得到文件列表

专升本 C语言课件 C() 数组.ppt

文档介绍

文档介绍:六、数组
字符串
字符数组:每一个元素都是字符
字符串:以'\0'结束的字符数组。
在C语言中,用存放字符串的空间的首地址来代表字符串。
下面的字符数组中哪些是字符串?
(1) char s[3]={'a','b','c'};
(2) char s[3]="abc";
(3)char s[]={'a','b','c'};
(4)char s[]="abc";
(5)char s[]={'a','b','c','\0'};
(6)char s[]={'a','b','c',0};
(7)char s[20]={'a','b','c'};
(8)char s[20]="abc\0cde\0";
不是
错误
不是





六、数组
字符串
下面两句完全等效,但前者简洁:
char s[ ]="abcd";
char s[ ]={'a','b','c','d','\0'};
下面两句等效,但前者节省空间:
char s[ ]="abcd";
char s[20]="abcd";
注意:
char s[ ]="abcd";
不能拆为
char s[ ];
s="abcd";
六、数组
字符串
以下是常用的初始化方法:
char s[ ]="abcd";
char *p="abcd";
前者
给一段空间,大小由"abcd"决定
首地址是s
后者
同 char *p; p="abcd";
……
5021
5022
5023
5024
5025
5026
5027
5028
5029
5030
5031
5032
5033
5034
……
c
a
d
b
5022
p
\0
……
5021
5022
5023
5024
5025
5026
5027
5028
5029
5030
5031
5032
5033
5034
……
c
a
d
b
s
\0
六、数组
字符串
判断以下语句的正确性:
(1)char *s;
s="abcd";
(2)char *s="abcd";
s[2]='f';
(3)char s[ ]="abcd";
s[10]=0;
(4)char s[10];
s="abcd";
(5)char *s[ ];
s="abcd";
(6)char s[ ]="abcd";
*s=0;
YES
YES
溢出
NO
NO
YES
六、数组
字符串
下面对s的初始化是否正确?
A) char s[5] = {"abc"};
B) char s[5] ={'a','b','c'};
C) char s[5] = "";
D) char s[5]="abcdef";
YES
YES
YES
NO
六、数组
字符串
对两个数组a和b进行如下初始化
char a[]= "ABCDEF";
char b[]={'A','B','C','D','\0','F'};
则以下叙述正确的是_____。
A) a与b数组完全相同
B) a与b长度相同
C ) a和b中存放字符串
D) a数组比b数组长度长
C D
六、数组
字符串
有以下程序 #include <> main() {char *p="abcde\0fghjik\0";
char u[]="abc\0"; printf("%d,%d,%d\n",sizeof(p),strlen(p),sizeof(u)); } 输出结果是______。
2, 5,5
p仅仅是一个指针变量,它的空间就用来存放一个地址
字符串常量存储时总是自动加'\0'
六、数组
字符串
字符串输出:
从第一个字符到第一个'\0'
以下完全等效
printf("%s\n",str);
puts(str);
while(s[i]!=0){
putchar(s[i]); i++;}
putchar(‘\n’);
char c[5]={'a','b','\0','c','\0'};
printf ("%s",c);
ab
六、数组
字符串

字符串的输入
gets(str);
scanf("%s",str);
scanf与gets的区别
gets(s); 能读入完整的一行字符串。
scanf(“%s”,s);读到空格、TAB、回车即结束。
如输入Turbo C<回车>时,
scanf读到s中只是Turbo,
而gets(s)可以读入完整的一行。
六、