C语言中字符串初始化问题

来源:百度知道 编辑:UC知道 时间:2024/06/17 06:17:43
char *a;
scanf("%s",a);

这样写编译系统实际上有没有给a分配内存空间?
会不会抹掉内存里的其他东西?

a是个野指针,指针千万要注意初始化。
char *a=NULL;
scanf("%s",a);
定义一个变量当然就要分配内存空间的,但是,你要知道指针是很特殊的,它用来指示内存单元的。指针本身的空间和指针指示的内容是不一样的。

这时指针的指向不确定

是可以指向某块内存

但是你没有申请,就不能操作.

char a[100];
scanf("%s",a);

char *a = (char *)malloc(100);
scanf("%s",a);

怎么可能呀!*a是一个指针变量呀!其实定义了他其实就在内存中划分了,变量啊的内存地址!其实说白了!也是内存中的空间呀~!