比如这样一个二维数组:
unsigned char DATA[][16] =
{
{0x20,0x04,0x20,0x04,0x22,0x42,0x22,0x82,0xFE,0x7F,0x21,0x01,0x21,0x01,0x20,0x10},
{0x20,0x10,0xFF,0x08,0x20,0x07,0x22,0x1A,0xAC,0x21,0x20,0x40,0x20,0xF0,0x00,0x00},
{0x80,0x00,0x40,0x00,0xF0,0x7F,0x1C,0x00,0x03,0x00,0xF0,0x7F,0x01,0x00,0x0E,0x00},
{0x04,0x00,0x00,0x00,0x04,0x00,0x04,0x20,0x04,0x40,0xFC,0x3F,0x00,0x00,0x00,0x00},
{0x20,0x00,0x20,0x80,0x20,0x40,0x20,0x20,0x20,0x10,0x20,0x0C,0xA0,0x03,0x7F,0x00},
{0xA0,0x01,0x20,0x06,0x20,0x08,0x20,0x30,0x20,0x60,0x20,0xC0,0x20,0x40,0x00,0x00},
{0x00,0x00,0x18,0x29,0x04,0x29,0x14,0x15,0x94,0x14,0x94,0x4A,0xD5,0x89,0xB6,0x44},
{0x14,0x3F,0x14,0x06,0x94,0x09,0x04,0x09,0x14,0x10,0x0C,0x30,0x04,0x10,0x00,0x00},
};
要用sizeof求其总的大小(不是到\0就结束那种)
方法,用sizeof
程序1:
1 2 3 4 5 | void disp()
{
printf ( "%d\n" , sizeof (DATA));
system ( "pause" );
}
|
返回正确结果:128
程序2:
1 2 3 4 5 | void disp(unsigned char s[][16])
{
printf ( "%d\n" , sizeof (s));
system ( "pause" );
}
|
返回结果:4
将sizeof(s)改为sizeof(*s),返回结果16
问题:
因为现在必须要用指针,也就是程序2的形势。可是不知道哪里错了,是指针类型不对?还是其他原因?应该怎么改?
谢谢!
相关帖子推荐:
- 为什么C++不引入事件机制?
- 对比大小3个数字的程序代码(c++)
- keil C51中变量赋0的问题
- keil下函数内变量不能释放?
- 求解多态方面的问题
- c++二义性问题
- 一个C语言的问题,新手提问,大神帮忙看下
- 求助。。。ListView ListModel怎么能放外部变量
比如这样一个二维数组:
unsigned char DATA[][16] =
{
{0x20,0x04,0x20,0x04,0x22,0x42,0x22,0x82,0xFE,0x7F,0x21,0x01,0x21,0x01,0x20,0x10},
{0x20,0x10,0xFF,0x08,0x20,0x07,0x22,0x1A,0xAC,0x21,0x20,0x40,0x20,0xF0,0x00,0x00},
{0x80,0x00,0x40,0x00,0xF0,0x7F,0x1C,0x00,0x03,0x00,0xF0,0x7F,0x01,0x00,0x0E,0x00},
{0x04,0x00,0x00,0x00,0x04,0x00,0x04,0x20,0x04,0x40,0xFC,0x3F,0x00,0x00,0x00,0x00},
{0x20,0x00,0x20,0x80,0x20,0x40,0x20,0x20,0x20,0x10,0x20,0x0C,0xA0,0x03,0x7F,0x00},
{0xA0,0x01,0x20,0x06,0x20,0x08,0x20,0x30,0x20,0x60,0x20,0xC0,0x20,0x40,0x00,0x00},
{0x00,0x00,0x18,0x29,0x04,0x29,0x14,0x15,0x94,0x14,0x94,0x4A,0xD5,0x89,0xB6,0x44},
{0x14,0x3F,0x14,0x06,0x94,0x09,0x04,0x09,0x14,0x10,0x0C,0x30,0x04,0x10,0x00,0x00},
};
要用sizeof求其总的大小(不是到\0就结束那种)
方法,用sizeof
程序1:
1 2 3 4 5 | void disp()
{
printf ( "%d\n" , sizeof (DATA));
system ( "pause" );
}
|
返回正确结果:128
程序2:
1 2 3 4 5 | void disp(unsigned char s[][16])
{
printf ( "%d\n" , sizeof (s));
system ( "pause" );
}
|
返回结果:4
将sizeof(s)改为sizeof(*s),返回结果16
问题:
因为现在必须要用指针,也就是程序2的形势。可是不知道哪里错了,是指针类型不对?还是其他原因?应该怎么改?
谢谢!
|