A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 粘糊浆 中级黑马   /  2015-3-18 17:37  /  1336 人查看  /  12 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

为什么这样不行  
   char *p;
  scanf("%s",p);

点评

字符指针没有被赋值,是个不确定的值,指向一个不确定的内存区域,这个区域可能存放有用的指令或数据。在这个不确定的区域重新存放字符串,...  发表于 2015-3-18 22:21

12 个回复

倒序浏览
本帖最后由 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,整个字符串
回复 使用道具 举报
首先第一行你定义了一个指向字符的指针,然后第二行,你%s是想输出一个字符窜,但是你没给指针变量p初始化,天晓得它指到哪里,没有初始化的指针是不能用的,亲
回复 使用道具 举报
waterfoxjie 发表于 2015-3-18 17:45
你这样是要输出什么内容啊?指针p你都没给它赋值,还有%s是输出字符串的
(1)char *p = 'A';
       scanf ...

scanf 是输入的函数吧,printf是打印的
回复 使用道具 举报
一步一个脚印 发表于 2015-3-18 17:49
首先第一行你定义了一个指向字符的指针,然后第二行,你%s是想输出一个字符窜,但是你没给指针变量p初始化 ...

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

哦哦     看错了     以为他那个是输出了
回复 使用道具 举报
Theshy 中级黑马 2015-3-18 21:32:29
8#
你定义的指针,指针指向的是地址,我是没见过地址能用scanf输入- -


回复 使用道具 举报
Micro 高级黑马 2015-3-18 22:20:50
9#
字符指针没有被赋值,是个不确定的值,指向一个不确定的内存区域,这个区域可能存放有用的指令或数据。在这个不确定的区域重新存放字符串,可能会发生无法预知的错误
回复 使用道具 举报
3Q~~3Q....
回复 使用道具 举报
这算野指针吧...
回复 使用道具 举报
你定义一个野指针没有指向的内存,它把字符串放在哪
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马