黑马程序员技术交流社区
标题:
分享:用字符数组和用指针定义字符串的相同于不同
[打印本页]
作者:
Tmac90301
时间:
2015-11-19 23:22
标题:
分享:用字符数组和用指针定义字符串的相同于不同
本帖最后由 Tmac90301 于 2015-11-19 23:40 编辑
定义一个字符串,有两种方式
一种是用字符串: char str[100]
一种是用指针: char *str = "...."
现在分享一下,关于这两种方式定义字符串的各自的特点
1、用字符数组定义字符串,如果不在定义的时候初始化,则必须指定数组的长度,如:char str[];,语法错误!
而 用指针定义字符串的好处,就是可以在定义的时候不用特意指定字符串长度,但是可能会带来野指针的问题
2、先定义字符数组,如果要批量赋值,只能用strcpy()函数来执行。因为数组名是一个常量,不可以给常量赋值
而先定义指向字符串的指针,可以先定义,后赋值,如 char *str; str = "apple",表示该指针指向常量。
3、用数组定义字符串,先定义,可以用scanf函数初始化。而未初始化以及未被赋值的字符串指针,不能用scanf初始化。因为该指针是个野指针,指向位置未知。计算机不允许给不定未知赋值,可能会造成系统崩溃
4、如果要用scanf函数初始化一个指针类型的字符串,则该字符串指针必须指向一个确定大小的字符数组,如:
char *s;
char s1[100];
s = s1;
scanf("%s",s) 实际上操作的就是s1,所以并没有什么意义
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2