ruhebumolu
如何不陌路
2015-02-11 14:50
采纳率: 66.7%
浏览 1.7k
已采纳

C语言字符指针问题求解答

main()
{ char * a;
a=(char * )malloc(40);
scanf("%s",* a );
}
上面代码中的scanf("%s",* a);这行为什么是合法的?请赐教!
不好意思第一次代码输错了-_-

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

6条回答 默认 最新

  • caozhy
    已采纳

    创建了一个40个字符长度的缓冲区,然后输入字符到这个缓冲区中。你测试下就知道了。

    点赞 评论
  • danielinbiti
    danielinbiti 2015-02-11 14:58
     a=(char)malloc(40);  看不懂这要干嘛,怎么不是指针呢
    
    点赞 评论
  • HTX9510
    Name鑫 2015-02-11 15:06

    这不是指针吧,指针不是得先定义*a吗?还有与楼下一样,你那步骤是干嘛呢?

    点赞 评论
  • HTX9510
    Name鑫 2015-02-11 15:06

    这不是指针吧,指针不是得先定义*a吗?还有与楼下一样,你那步骤是干嘛呢?

    点赞 评论
  • oyljerry
    oyljerry 2015-02-11 15:17

    应该是char* a
    类型用错了。

    点赞 评论
  • lijing_lj928
    Arthur-LJ 2015-02-11 17:31

    从方法上本身是合法的,执行时,得不到想到的结果,最坏的情况下是程序core。此依赖于 scanf,*a的值。 当*a的值为0时,scanf函数内部可能做的判断,
    不做处理,但如果是其它值,它认为是一个合法的地址,就会往地址中写入数据,程序core dump,

    点赞 评论

相关推荐