关于取得数组长度的问题

[复制链接]
3460|3
 楼主| 风溪香士 发表于 2013-4-30 19:20 | 显示全部楼层 |阅读模式
本帖最后由 风溪香士 于 2013-4-30 19:22 编辑

写了一个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]  这句不能得到实参数组的长度,这是为什么呢?
请大家指点一下。
airwill 发表于 2013-5-31 11:45 | 显示全部楼层
sizeof 是编译器里实现的. 所以sizeof(table_name)取的是你定义的 table_name 的长度, 并非里面实际有多少数据.
用另外的办法实现吧
ccxlslr 发表于 2013-5-31 12:42 | 显示全部楼层
数组,不能通过函数参数传递,

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

你上面求数组字节数,实际得到的时指针长度。
赤铸 发表于 2013-6-2 12:10 | 显示全部楼层
sizeof(table_name) = 指针变量的字节数(2或4)

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

n 是长度
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:我命由我不由天!

13

主题

82

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部