打印

关于取得数组长度的问题

[复制链接]
2467|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

粉丝