指针定义的字符串(char*str="hello")和字符数组(char str[]={'h','e','l','l','o'})的区别

指针定义的字符串(char*str="hello")和字符数组(char str[]={'h','e','l','l','o'})的区别:
  字符串数组是用来存放字符串的数组,在内存中占一段连续的单元。所占内存存放的是字符串。定义方法为:char ch[] 可初始化。
  字符指针是指向字符的指针,指针变量本身在栈上存储,而数据存储在只读段,只能读取,不能更改。定义方法为:char *p;
只要区别有以下几种:
    1)字符数组由若干个元素组成,每个元素中放一个字符,而字符指针变量中存放的地址(字符串第一个字符的地址)
    2)赋值方式
      对于字符数组只能对各个元素赋值,不能用以下办法对字符数组赋值:
      char str[10];
      str = "hello world!";错!!!
      而对于字符指针变量,可采用如下赋值:
      char *str
      str= "hello world!"; 将字符串中第一个元素的地址赋给指针变量a.
   3)初始化
      char *str = "hello world!";
      等价于
      char *str=NULL//预防野指针
      str= "hello world!";
      而对数组的初始化:
      char str[10] = {"hello world!"}; 则不能写成 char str[10];  str = "I love you!";
   4)定义一个字符数组,在编译时为它分配内存单元,它有确定的地址。
      而定义一个字符指针变量时,时给指针变量分配内存单元,指针指向字符串的首元素。

猜你喜欢

转载自blog.csdn.net/Chen51_5/article/details/80038455
今日推荐