| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1268 人关注过本帖
标题:sizeof获取数组长度的问题
只看楼主 加入收藏
a12429971
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2018-1-16
结帖率:0
收藏
已结贴  问题点数:20 回复次数:3 
sizeof获取数组长度的问题
发现好像在函数模板中使用sizeof和在main函数中使用sizeof会得出不一样的值
本人初学者,对这个情况是在理解不透,望各位前辈赐教

template <class T>
T arrlen(T array[])
{
    int length =(sizeof(array) / sizeof(array[0]));
    cout << length << endl;
}
先是写了一个函数模板

但在main函数中
int Int[] = {1,4,5,7,2,1,3,9,34}; //有9个元素的整型数组
int length = sizeof(Int) / sizeof(Int[0]);
此时 length = 9

而我在main函数中套用了arrlen函数时

arrlen(Int);

输出却是2

恳请各位前辈帮助
搜索更多相关主题的帖子: sizeof 数组 函数 int length 
2018-06-05 18:10
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:528
帖 子:9025
专家分:54030
注 册:2011-1-18
收藏
得分:20 
array的类型是T*,是个指针,不是数组。
如果是数组,怎么传参?原生数组可没有拷贝构造和赋值操作。

程序代码:
template <class T, size_t N>
T arrlen( T (&array)[N] )
{
    size_t length = (sizeof(array) / sizeof(array[0]));
    cout << length << endl;
}

参见 http://en.
2018-06-05 21:20
a12429971
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2018-1-16
收藏
得分:0 
回复 2楼 rjsp
谢谢前辈!现在在自学C++,弄懂了sizeof值不一的原因了,但不太明白template后面的size_t N是什么意思,还需要再研究
2018-06-05 22:34
快速回复:sizeof获取数组长度的问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.016737 second(s), 10 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved