char *str = "hello";
这里的指针str是在栈区,而”hello/0”是在静态存储区,一旦赋值就不允许修改,但是可以访问,str指向了字符串内容的头指针
char str[] = "hello";
这里的指针str是在栈区,”hello/0”也是在栈区,它相当于一个数组,你不可以改变它重新指向一个静态存储区的字符串,可以修改
char *str = (char *)malloc(sizeof(char)*20);
str在栈区,数组内容在堆区,用strcpy赋值或者一个个元素赋值,可以被修改,若使用 str = "world";
会导致str的指针指向了静态存储区的”world/0”字符串,导致内存泄漏
char str[20] = "hello";
str在栈区,数组内容在栈区,初始化时赋值或者一个一个元素赋值或者用strcpy赋值,你不可以改变它重新指向一个静态存储区的字符串,可以被修改
以上只要赋值方式正确,均可通过数组方式或者指针方式访问其中内容
新闻热点
疑难解答