美文网首页
char *和char[]的初始化

char *和char[]的初始化

作者: 快乐小哥 | 来源:发表于2017-02-21 16:12 被阅读1327次
char* str1 = "abcd";
char str2[] = "abcd";

void reverse(char * input, int len){ ...}

在调用reverse函数时. 从形式上 reverse(str1,5) 和reverse(str2, 5)都没有错误,传入的参数都是char数组的头指针,但是实际操作时,不能采取str1的初始化形式.

char* str1 ="abcd"

含义是先新建一个字符串,内容是abcd 然后str1是一个头指针,指向这个串. 但是这个新建串是作为const存在的,并不是一个可以编辑的变量,因此,一旦你想更改其中的值,程序就会挂掉.
相应的

char *str1 = (char*)malloc(5*sizeof(char)); 
 str1 = "abcd";

相当于开辟一个5个长度的数组,头指针是str1,但是第二句又把str1指向的位置变了,之后还是不能操作str1的内容.

char str2[] = "abcd"

这个的含义是在内存中开辟一个数组,然后向该数组中填充"abcd", 是一个可操作的变量.所以初始化的时候可以这么写,就能在之后更改其中的内容了.

相关文章

  • char *和char[]的初始化

    void reverse(char * input, int len){ ...} 在调用reverse函数时. ...

  • char [] 和 char*

    作者按:无参考价值。 今天在看紫书时候,发现作者在WERTYU题目和Palindrome题目中定义了以下三个变量:...

  • char和char *

    星号 * 和取地址符&的关系 1.星号 * 代表一个内存地址,是一个数字 ,说明这个变量是个指针。比如 char ...

  • const char* 和 char*

    char *向const char *转化 char * 向const char *可以直接赋值 const ch...

  • char * 和char[]的区别

    如下代码块char pngPath[10]; 在下面的sprintf函数中报错了但是char *pngPath可...

  • char * 和 char []的区别

    区别: 1:char* s1=”abc”;s1是一个指针,s1所指向的地址的内容是不可改变的,但是s1可以指向其他...

  • C++杂记(三)

    1.应用{...}初始化聚合类对象: 2.“std::basic_string

  • char数组的使用

    char *p="hello“;|| char p[500]="hello“; 以这种方法初始化的字符串是常量字符...

  • 无标题文章

    char * strcopy(char * a,char * b){ char * c = a; wh...

  • C | char* and char[]

    char[] 就是普普通通的字符数组char* 却是王子一般的字符指针你如果把一个字符串赋值给char* 类型的...

网友评论

      本文标题:char *和char[]的初始化

      本文链接:https://www.haomeiwen.com/subject/zpsuwttx.html