黑马程序员技术交流社区

标题: 如何用指针接收输入的字符串 [打印本页]

作者: NenKeer    时间: 2014-4-28 22:39
标题: 如何用指针接收输入的字符串
为了避免出现野指针,使用指针都要初始化,但是如果用数组接收输入的字符串,对于字符串的字符数就有限制。
  1.         char string[10];      //接收的字符数都是固定值
  2.         scanf("%s",string);
  3.         //或者
  4.         char string[10];
  5.         gets(string);
  6.       
复制代码
上面的都可以编译运行,但是如果改成指针的话
  1.         char *string;
  2.         scanf("%s",string);
  3.        //或者
  4.         char *string;
  5.         gets(string);
复制代码
编译没有问题,但是运行时候会出错,因为使用了野指针。
有大神指导怎么才能避免这种野指针的情况吗?
作者: 傘が咲く    时间: 2014-4-28 23:17
首先,造成野指针的原因有以下几种:

一、指针变量没有被初始化。
二、指针p被free或者delete之后,没有置为NULL。
三、指针操作超越了变量的作用范围。

楼主在定义的时候并没有进行初始化。用指针代表字符串的时候,必须要对它进行初始化。
作者: NenKeer    时间: 2014-4-29 10:30
傘が咲く 发表于 2014-4-28 23:17
首先,造成野指针的原因有以下几种:

一、指针变量没有被初始化。

我给指针初始化成0或者NULL 编译器会报错
我是用VS2010编译的 是编译器的问题吗?




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2