标题:求教一下:问什么这里编译通过,当运行时就出错?
只看楼主
IZHQT
Rank: 1
等 级:新手上路
帖 子:32
专家分:0
注 册:2012-8-27
结帖率:63.64%
已结贴  问题点数:20 回复次数:5 
求教一下:问什么这里编译通过,当运行时就出错?
#include<stdlib.h>
#include <string.h>
#include<stdio.h>

int num;
char* arry;
void main(void)
{
   

        int a=1234;

                sprintf(arry, "%d",a);
        printf("%s",arry);
   
}

----------------------------------------------------------------------------------------------------------------------
如果换成这样就好了,请问这是什么原因?
#include<stdlib.h>
#include <string.h>
#include<stdio.h>

int num;
char arry[20];
void main(void)
{
   

        int a=1234;

        sprintf(arry, "%d",a);
        printf("%s",arry);
        //uart_sendN(UART0,(uint8 *)arry,strlen(arry));
   
}
搜索更多相关主题的帖子: void 1234 include 
2013-04-23 20:58
pauljames
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:千里冰封
威 望:9
帖 子:1555
专家分:10000
注 册:2011-5-8
得分:15 
int num;
char* arry;
void main(void)
{
   

        int a=1234;

                sprintf(arry, "%d",a);
        printf("%s",arry);
   
}
你只申请了一个指针空间,而且也没说具体要指向哪个空间,然后就去访问了,当然要出错;属于非法访问内存。
后面你申请了20个Byte的空间,并且arry表示&arry[0]这个空间当然是可以访问的,就是arry[0]

经常不在线不能及时回复短消息,如有c/单片机/运动控制/数据采集等方面的项目难题可加qq1921826084。
2013-04-23 21:23
Han_FlyB
Rank: 6Rank: 6
等 级:侠之大者
帖 子:143
专家分:424
注 册:2013-3-25
得分:5 
因为你这个char* arry    arry是一个char型指针,没有分配空间的嘛,当然会出错了
2013-04-23 21:29
IZHQT
Rank: 1
等 级:新手上路
帖 子:32
专家分:0
注 册:2012-8-27
得分:0 
原来如此,突然恍然大悟,尽然犯了了这么低级的错误。
2013-04-23 22:09
IZHQT
Rank: 1
等 级:新手上路
帖 子:32
专家分:0
注 册:2012-8-27
得分:0 
谢了
2013-04-23 22:13
我叫沃恩
Rank: 12Rank: 12Rank: 12
来 自:Asia
等 级:贵宾
威 望:10
帖 子:1234
专家分:3865
注 册:2013-3-29
得分:0 
来学习!

因为我是菜鸟,所以应该被骂! 细节+坚持=成功!
2013-04-23 22:42



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-405274-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.048126 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved