C语言中为什么可以用指针代表字符串

char * str = "ggh",str不是指针吗?它为什么就直接等价于这个字符串了,难道“ggh”代表的是首地址吗?那也不对啊,假如把ggh当做一个最后为\0的字符数组的话,str应该等价于这个字符数的首地址才对,不应该直接等价于ggh啊?

str 确实是一个指针,它指向 "ggh" 字符串常量的首地址。 C 语言中字符串常量可以被视为一个字符数组,其中的最后一个字符为 \0。所以str 指向的地址即为 "ggh" 字符串常量的首地址,它们等价。

不过要注意的是,字符串常量是一个不可修改的存储区域,因此在使用 str 的时候不能修改它指向的内容,否则会导致程序错误。如果想修改它指向的内容,可以使用字符数组来存储字符串。

指针指向字符串的地址,地址里面的内容是该字符串的内容。