黑马程序员技术交流社区

标题: C问题 [打印本页]

作者: 粘糊浆    时间: 2015-3-18 17:37
标题: C问题
为什么这样不行  
   char *p;
  scanf("%s",p);
作者: waterfoxjie    时间: 2015-3-18 17:45
本帖最后由 waterfoxjie 于 2015-3-18 17:55 编辑

你这样是要输出什么内容啊?指针p你都没给它赋值,还有%s是输出字符串的
(1)char *p = 'A';
       scanf("%c\n",*p);   这样输出的结果就是:A
(2)char *p = 'A';
       scanf("%p\n",p);   这样输出的结果就是:指针p在内存中的地址
(3)char *p = "asdf";
       scanf("%s\n",p);   这样输出的结果就是:asdf,整个字符串
作者: 一步一个脚印    时间: 2015-3-18 17:49
首先第一行你定义了一个指向字符的指针,然后第二行,你%s是想输出一个字符窜,但是你没给指针变量p初始化,天晓得它指到哪里,没有初始化的指针是不能用的,亲
作者: a380vs747`    时间: 2015-3-18 17:57
waterfoxjie 发表于 2015-3-18 17:45
你这样是要输出什么内容啊?指针p你都没给它赋值,还有%s是输出字符串的
(1)char *p = 'A';
       scanf ...

scanf 是输入的函数吧,printf是打印的
作者: a380vs747`    时间: 2015-3-18 17:58
一步一个脚印 发表于 2015-3-18 17:49
首先第一行你定义了一个指向字符的指针,然后第二行,你%s是想输出一个字符窜,但是你没给指针变量p初始化 ...

他不是输出,是取值赋值给p
作者: a380vs747`    时间: 2015-3-18 17:59
我试了下,可以的,如果有问题,那就是p指针一开始没有分配内存,你可以再加一句char s[10] ; p = s;再试试
作者: waterfoxjie    时间: 2015-3-18 20:46
a380vs747` 发表于 2015-3-18 17:57
scanf 是输入的函数吧,printf是打印的

哦哦     看错了     以为他那个是输出了
作者: Theshy    时间: 2015-3-18 21:32
你定义的指针,指针指向的是地址,我是没见过地址能用scanf输入- -



作者: Micro    时间: 2015-3-18 22:20
字符指针没有被赋值,是个不确定的值,指向一个不确定的内存区域,这个区域可能存放有用的指令或数据。在这个不确定的区域重新存放字符串,可能会发生无法预知的错误
作者: 粘糊浆    时间: 2015-3-19 01:07
3Q~~3Q....
作者: ab63333334    时间: 2015-3-19 01:26
这算野指针吧...
作者: 小白一号    时间: 2015-3-19 08:13
你定义一个野指针没有指向的内存,它把字符串放在哪




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