请教一个数组问题

来源:百度知道 编辑:UC知道 时间:2024/05/18 06:03:55
#include<iostream.h>
#include<string.h>
void js(char a[],int b[],int m)
{
for(int i=0;i<m;i++)
{
int h=b[i];
cout<<h<<endl;
a[i]=*(b+i);

}
void main(void)
{
char a[6];
char*p=a;
int b[5]={1,2,3,4,5};
js(a,b,5);
a[5]='\0';
cout<<a<<endl;
}
我想把整数数组转换成字符数组然后输出
哪里错了?
我用的是地址传递,应该没有问题,只是得不到正确答案,只是几个奇怪的字符
不过如果改成a[i]=*(b+i)-1232;就对了。为什么?

我怎样该才正确?把整型转换成字符型?请指教。

汗~弄错了.

怎么可能对呢?没VC,无法试.
但如果你a[5]='\0',那就只能显示5个a[]这是肯定了.('\0'占了一个嘛,它后面的a[]将显示不了)

还有你程序的输出语句是按a的类型输出的,等于printf("%c",a),所以没有错,只是这个字符我们不懂.就是说传递成功了.而你减了一个数后,它的ASC码正好是对应的10进制的-字符-数字,显示就对了,但,已经不是原来传的b[]值啦.
不过b[]值很大,高8位也有内容时,这样转类型将会丢失精度.

以下为示例:

void main()
{
char a,b;
a=120;
b=121;
printf("%c,%c\n",a,b);
printf("%d,%d\n",a,b);
}

显示:
x,y
120,121

你可以再强制转换回int类就成了,main最后一句改成:cout<<(int)a<<endl;

#include<iostream.h>
#include<string.h>
void js(char a[],int b[],int m)
{
for(int i=0;i<m;i++)
{
int h=b[i];
cout<<h<<endl;
a[i]=*(b+i);
}
}
void main(void)
{
char a[6];
char *p=a;
int b[5]={1,2,3,4,5};
js(a,b,5);
a[6]='\0';
cout<<p<<endl;