求数组a的长度sizeof(a)/sizeof(a[0]) 和 sizeof(a)/sizeof(t) t是数组元素的类型差别是什么呢

taskdriven 2008-01-18 02:04:26
我读的书上说,后者的做法比较差,我不知道为什么,希望大家能给我个解释,谢谢
...全文
298 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
zzyjsjcom 2008-01-21
  • 打赏
  • 举报
回复
sizeof(a)/sizeof(a[0]) 更通用
netxuning 2008-01-21
  • 打赏
  • 举报
回复
前者的使代码的可移植性更好
我一般都将其定义为宏
#define count(a) sizeof (a) / sizeof (a[0])
Just4life 2008-01-20
  • 打赏
  • 举报
回复
同意一楼的答案
taskdriven 2008-01-18
  • 打赏
  • 举报
回复
恩,多谢
wwwhaichun 2008-01-18
  • 打赏
  • 举报
回复
主要为了以后修改代码,比如发现这个类型(如char)太小了,要用一个大点儿的(如int)
用前者,只需改变数组的类型,其他地方不用管了
但后者的话,只改变数组的类型还不够,因为类型不一样时大小可能也不一样
所以还得去各个地方改相应的代码,这样的话可能会修改遗漏而引起问题。

flyingwow99 2008-01-18
  • 打赏
  • 举报
回复
结果肯定是一样的

sizeof(a)/sizeof(a[0]) ........对任何类型的数组都能用
sizeof(a)/sizeof(t) .......... 数组改变类型这里都要改,万一写错了t你还不死?
Treazy 2008-01-18
  • 打赏
  • 举报
回复
一般后面的这种写法
比较晦涩
也就是它的确没什么可读性

如果一定要写成那样,我觉得也是可以的
毕竟sizeof是在编译期就决定的,所以不涉及运行期间的判断

taskdriven 2008-01-18
  • 打赏
  • 举报
回复
没有别的人可以解释一下吗,多谢。
taskdriven 2008-01-18
  • 打赏
  • 举报
回复
1 可读性 好像有点明白
2 健壮性 不明白
longmaple 2008-01-18
  • 打赏
  • 举报
回复
1。可读性
2。健壮性

LZ仔细想想吧。
taskdriven 2008-01-18
  • 打赏
  • 举报
回复
没有人能给个解释吗

70,037

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧