C++中数组与指针 小程序 看看是那里错了?
unsigned char xianshidata[16*6] =
{0x02,0x13,0x00,0x10,0x00,0x41,
0x00,0xF8,0x04,0x90,0x00,0x10,
0x02,0x30,0xFF,0x10,0x04,0x42,
0x00,0x40,0xFE,0x90,0x08,0x10,
0x02,0x50,0x00,0x1F,0x42,0x44,
0x04,0x40,0x10,0x90,0x08,0x10,
0xFF,0x90,0x00,0x10,0x43,0x48,
0xFE,0x40,0x90,0x90,0x08,0x20,
0x04,0x10,0x1F,0x00,0x41,0x50,
0x00,0x40,0xD0,0x10,0x08,0x30,
0x04,0x10,0x10,0x00,0x40,0x60,
0x40,0x44,0x90,0x10,0x08,0x48,
0x08,0x17,0x10,0x00,0x40,0x01,
0x40,0xFE,0x90,0x50,0x08,0x84,
0x08,0x10,0x10,0x00,0x40,0x06,
0x50,0x00,0x90,0x20,0x08,0x04
};//
unsigned char dis_buffer[16*6];
unsigned char *p1,*shouzhi;
int aa,bb;
main()
{
shouzhi=&xianshidata[0*0];
p1=shouzhi;
for(aa=0;aa <16;aa++)
{ for(bb=0;bb <6;bb++)
{ dis_buffer[aa*bb]=*(p1+aa*6+bb);
}
}
}
老是搞不清楚指针的用法,我想把xianshidata[16*6]赋给dis_buffer[16*6],该怎么变程序啊。以上我自己编的那个调试的时候发现dis_buffer[16*6]的每一位都是零,错在哪里?怎么改
[解决办法]
两个都是一维数组,就别用双重循环:
for (int i=0;i <16*6;++i)
dis_buffer[i]=xianshidata[i];
[解决办法]
你这是一维数组,这样就可以了
main()
{
shouzhi=&xianshidata[0*0];
p1=shouzhi;
for(aa=0;aa <16*6;aa++)
{
dis_buffer[aa]=*(p1+aa);
}
}
[解决办法]
为了保持与2维数组相同的习惯,你可以这样:
for(int a=0;a <16;++a)
for(int b=0;b <6;++b)
dis_buffer[a*16+b] = xianshidata[a*16+b];
