为什么用printf函数输出会出现乱码?

UnknowName 2011-06-09 06:08:49
我用在VC上调试下面的代码,却发现会出现乱码,哪个哥们给我解释一下,在下实在是弄不明白。

#include "stdio.h"
#include "stdlib.h"

main()
{
char i = 'a', *p = &i;
printf(p);

system("pause");

return 0;
}

除了输出i的值'a'外,后面还有一些乱码出现。我没有移动指针,怎么会出现乱码呢?
...全文
2558 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
UnknowName 2011-06-09
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 guanzhouxuezi 的回复:]

int printf ( const char * format, ... );【printf函数原型】
第一个参数一个一个字符常量指针,printf(p)把p当作字符串来输出,但是缺少‘\0’,就会输出乱码了~
[/Quote]
谢谢,你讲的很清楚,让我更加明白了。呵呵。
我写这个程序就是为了测试printf函数需要的是什么类型的数据,嘿嘿
guanzhouxuezi 2011-06-09
  • 打赏
  • 举报
回复
int printf ( const char * format, ... );【printf函数原型】
第一个参数一个一个字符常量指针,printf(p)把p当作字符串来输出,但是缺少‘\0’,就会输出乱码了~
xunxun 2011-06-09
  • 打赏
  • 举报
回复
printf("%c\n",*p);
UnknowName 2011-06-09
  • 打赏
  • 举报
回复

#include "stdio.h"
#include "stdlib.h"

main()
{
char i = 'a', *p = &i;
printf(p);

system("pause");

return 0;
}
UnknowName 2011-06-09
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 kid_coder 的回复:]

printf把p当做字符串来输出了~
由于p没有存储结束符'\0',所以出现乱码
[/Quote]
谢谢,没发现这个问题 ,嘿嘿,非常谢谢你
KID_coder 2011-06-09
  • 打赏
  • 举报
回复
printf把p当做字符串来输出了~
由于p没有存储结束符'\0',所以出现乱码

69,382

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧