C++这个函数如何调用输出正确结果?

来源:百度知道 编辑:UC知道 时间:2024/05/27 05:14:07
#include <iostream.h>

int Dec2BCD(unsigned long Dec, unsigned char *Bcd, int length)
{
int i;
int temp;

for(i=length-1; i>=0; i--)
{
temp = Dec%100;
Bcd[i] = ((temp/10)<<4) + ((temp%10) & 0x0F);
Dec /= 100;
}

return 0;
}

void main()
{

unsigned char* a;
Dec2BCD(18, a, 2);
cout<<"a="<<a;
}
上述为程序代码,但是一执行就说遇见问题要关闭,不会出现任何结果
我哪里错了呢?请解释仔细,因为我是菜鸟
如何初始化啊,请针对这个给出2个输入值,然后让我程序有结果,谢谢

unsigned char* a; //指针没有初始化

#include <iostream.h>

int Dec2BCD(unsigned long Dec, unsigned char *Bcd, int length)
{
int i;
unsigned long int temp;
unsigned char * p = Bcd;

for(i=length-1; i>=0; i--,++p)
{
temp = Dec%100;
p[i] = ((temp/10)<<4) + ((temp%10) & 0x0F);
Dec /= 100;
}

return 0;
}

void main()
{
unsigned char* a = new unsigned char[2];
Dec2BCD(18, a, 2);

for(int i = 0; i < 2; ++i)
{
cout<<(unsigned int) a[i]<<" ";
}

delete []a;

}

unsigned char* a;
Dec2BCD(18, a, 2);
这两句中间加一句

a=(char *)malloc(2*sizeof(char *));

这样可以给a开辟两个char空间 才可以使用 否则内存溢出了

a没有分配大小,另外Dec2BCD函数里面给a赋的值也不是Ascii码,没法用cout显示。
正确做法:
unsigned char a[足够大小];
或者
unsigned char *a = new unsigned char[足够大小];
注意:永远不要判断a是否为NULL,和C