黑马程序员技术交流社区

标题: 分享:用字符数组和用指针定义字符串的相同于不同 [打印本页]

作者: 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