免费注册 查看新帖 |

Chinaunix

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

[C] char* 如何转 cha[] [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2014-04-04 17:27 |只看该作者 |倒序浏览
LPCTSTR softs[] = {".qq",".msn"};
LPCTSTR exts[] = {".exe"};
LPCTSTR * array[] = {softs,exts};

int count = sizeof(softs) / sizeof(softs[0]); //这样可以得到softs数组的个数
count = sizeof(array[0]) / sizeof(array[0][0]); //这样就不对,请问要如何获取正确数组个数

论坛徽章:
2
申猴
日期:2014-04-17 14:37:17CU十四周年纪念徽章
日期:2018-06-23 16:03:03
2 [报告]
发表于 2014-04-04 22:48 |只看该作者
sizeof(array[0]) 这个array[0]是指针。所以不对。

论坛徽章:
0
3 [报告]
发表于 2014-04-06 23:00 |只看该作者
感觉有点头疼了,知道语法不对,不过不知道怎么写才对!

论坛徽章:
0
4 [报告]
发表于 2014-04-09 13:43 |只看该作者
softs是一个有两个字符串指针的数组,sizeof(softs)=8。softs[0]是一个字符串指针,sizeof(softs[0])=4。 sizeof(softs) / sizeof(softs[0])=2,这时候是对的。
array[0]就是softs,在这里变成一个指向字符串指针的指针,不再是一个字符串指针的数组。sizeof(array[0])=4,array[0][0]就是softs[0],是一个字符串指针,sieof(array[0][0])也是4,sizeof(array[0]) / sizeof(array[0][0])此时等于1,就不对了。

就像下面的代码
char a[12]="hello world";
char *b=a;
printf("%s,%d\n%s,%d\n",a,sizeof(a),b,sizeof(b));
输出的结果是
hello world,12
hello world,4
a和b内容一样,但a是数组,sizeof(a)就是编译器给a分配的大小12,b是指针,在32的系统上,sizeof所有指针都是4
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP