0
问答首页 最新问题 热门问题 等待回答标签广场
我要提问

关于取得数组长度的问题



写了一个LCD12864显示的函数,是这样的:
void LCD12864_write(unsigned char address,unsigned char table_name[])
{
        unsigned char i;
        LCD12864_write_com(address);
        for(i=0;i<(sizeof(table_name)/sizeof(table_name[0]));i++)
        {
                LCD12864_write_dat(*table_name);
                table_name++;
        }
}
参数address是LCD12864的显示地址,table_name[]是要显示的数据的数组。但是sizeof(table_name)/sizeof(table_name[0]  这句不能得到实参数组的长度,这是为什么呢?
请大家指点一下。
提问者:vcwerwre 地点:- 浏览次数:887 提问时间:02-13 08:48
我有更好的答案
提 交
3条回答
fgfFsG 02-14 19:52
sizeof 是编译器里实现的. 所以sizeof(table_name)取的是你定义的 table_name 的长度, 并非里面实际有多少数据.
用另外的办法实现吧
naiztycheng 02-13 20:02
数组,不能通过函数参数传递,

你上面的程序实际是以指针的方式传递的。切记

你上面求数组字节数,实际得到的时指针长度。
lanjie66 02-13 14:03
sizeof(table_name) = 指针变量的字节数(2或4)

void LCD12864_write(unsigned char address, unsigned char n, unsigned char table_name[])

n 是长度
撰写答案
提 交
1 / 3
1 / 3