免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12345下一页
最近访问板块 发新帖
查看: 17704 | 回复: 45
打印 上一主题 下一主题

如何通过指向数组的指针获得该数组元素的个数? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-06-06 15:30 |只看该作者 |倒序浏览
  1. typedef struct key
  2. {
  3.         char* word;
  4.         int count;
  5. }key;

  6. key keytab[] = {
  7.         "auto", 0,
  8.         "break", 0,
  9.         "case", 0,
  10.         "char", 0,
  11.         "const", 0,
  12.         "continue", 0,
  13.         "default", 0,
  14.         "unsigned", 0,
  15.         "void", 0,
  16.         "volatile", 0,
  17.         "while", 0
  18. };

  19. //返回keytab[] 元素的个数
  20. int  element_cout (key keytab[]);
复制代码
  //如何实现element_cout 函数????

由于这个时候数组作为函数参数, keytab自动蜕化为指针
  1. sizeof(keytab) = 4
复制代码

所以没办法用

  1. count = sizeof(keytab)/sizeof(keytab[0])   
复制代码
来得到.

谢谢大家

[ 本帖最后由 aaaab 于 2008-6-6 15:32 编辑 ]

论坛徽章:
0
2 [报告]
发表于 2008-06-06 15:32 |只看该作者
不行

论坛徽章:
0
3 [报告]
发表于 2008-06-06 15:33 |只看该作者
要么用C++,C语言no way..

论坛徽章:
0
4 [报告]
发表于 2008-06-06 15:33 |只看该作者
用宏

论坛徽章:
0
5 [报告]
发表于 2008-06-06 15:34 |只看该作者
原帖由 scutan 于 2008-6-6 15:33 发表
用宏

可以进一步指教一下吗?谢谢

论坛徽章:
0
6 [报告]
发表于 2008-06-06 15:35 |只看该作者
最后加个NULL, 0
然后模仿strlen

论坛徽章:
2
2015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:56:11
7 [报告]
发表于 2008-06-06 15:36 |只看该作者
加一个终结符(标志)

论坛徽章:
0
8 [报告]
发表于 2008-06-06 15:36 |只看该作者
恩, 我想最后加一个标志符号. 比如最后一个元素是 {"#", -1} 然后通过这个来判断.

论坛徽章:
0
9 [报告]
发表于 2008-06-06 15:37 |只看该作者
我想问一下,编译器是通过什么测试数组的长度的?

论坛徽章:
0
10 [报告]
发表于 2008-06-06 15:42 |只看该作者
原帖由 aaaab 于 2008-6-6 15:37 发表
我想问一下,编译器是通过什么测试数组的长度的?

这个时候编译器就管不着了,在运行时如果使用了不该使用的内存,操作系统就该上来kill掉程序了。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP