字符串与数组的关系还有指针

img


左边那个赋值hello为什么是对的呢?字符串不是不能赋值给数组嘛

这里你要理解字符串是啥,数组是啥。
字符串是以一块存储字符地址开始,取地址中存储的字符,直到遇到'\0'(字符串的终结符标志),连续内存存储字符串,'\0'识别结尾,不能出现特殊字符。
数组是啥,也是预先申请一系列存储特定类型的连续内存,然后存储特定的类型的变量。

如果是char数组,其实对比字符串,其实就可以类比啊。
所以 有一种char数组的初始化,可以用字符串直接去进行初始化,其实就是给char数组中按字符串的每个字符格式,塞入特定的字符而已
可以分析 str[] = {"hello"};和str[]={'h','e','l','l','0','\0'};类比理解~

具体问的是左边哪一个呢?
char * str 声明的是一个指针,这个指针可以指向任何字符串常量。char str[] 声明的是一个字符数组,数组的内容可以是任何内容,严格意义上说,末尾加上'\0' 之后才能算是字符串,但是有时候\0会默认省略。

希望对题主有所帮助!可以的话,帮忙点个采纳!

你指的是左边的哪一个?打对号的都是可以的,是语法规定,没有原因