|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
如果这样写的话,字符指针要怎么初始化?
- #include <stdio.h>
- int main(void)
- {
- char *name;
- printf("What's your name:");
- scanf("%s", name);
- printf("Your name is %s\n", name);
- return 0;
- }
复制代码
scanf将从标准输入接收的字符串写入以某个地址为首地址的一片内存空间中,以 '\0' 结尾。
这个地址就是name的值,即指针name指向的位置。不是放到存放指针变量自己的内存空间
指针不初始化,它里面存放的数据就是垃圾,但是又会被解释为一个地址,这块地址完全无法预测是在哪里,它甚至可能存放系统参数,对这种指针进行间接访问甚至修改里面的内容是绝对危险的,编译器基本都必须制止用户这样的操作,不然谁敢想像学个C入门会有把电脑玩崩的危险。这种指向非法空间的就是野指针。
只要是系统没分配给你的,都是非法空间。你只有指针是存不了字符串的,需要足以存放所输入字符串的合法空间,所以要用字符数组。
|
|