char *标识符 和 char 标识符[表达式]有什么区别?

img


疑惑的地方:
为什么用char name[50]可以,但是char *name就不行?

个人是这样理解,char name[50] 是一个长度为 50 的字符数组,占用了一段连续的内存;char *name 是一个字符指针。

fopen 的定义为:

FILE *fopen(const char *path, const char *mode);

所以你的实参 path 应该是一个内存地址,传递给 *path指针,而不是传递一个指针。

望采纳。

因为一个单纯的野指针没有对应的内存,而数组是有内存的
你给一个野指针赋值字符串,就是在给一个随机内存地址赋值
系统会保障你的程序只能操作你自己程序占用的内存,不可以随便去操作别的程序占用的内存

char*是指针,指针是指向地址的,直接创建指针变量,它指向的是一个随机地址,相当于野指针
你可以创建数组后将数组的地址给创建的指针变量才行!

char是一个指针,你这要用char的话要写个字符数组,把它的地址给char*