模板-有关获取数组长度sizeof(array) / sizeof(array[0])的问题

问题描述

有关获取数组长度sizeof(array) / sizeof(array[0])的问题

下面就是一个简单程序,请问为什么在ranking函数中调用getArrayLen()时输出的N值不是7,而是1?
#include
using namespace std;
template
int getArrayLen(T& array) //使用模板定义一个函数getArrayLen,该函数将返回数组array的长度
{
return (sizeof(array) / sizeof(array[0]));
}

void ranking(int a[], int b[]){
int N = getArrayLen(a);
cout << N;
}
int main()
{
int a[] = { 1, 2, 3, 4, 5, 6, 7 },b[7];
ranking(a, b);
return 0;
1. }

解决方案

sizeof对于数组类型来说,返回的不是数组的长度,而是数组首元素的长度。
事实上,没办法知道一个数组的长度,否则字符数组用不着浪费一个单元用作为结束标志了。

解决方案二:

这是因为你作为参数传递的数组,sizeof并不会去求数组的整个长度,而是指针长度4。而如果你放到函数里面就可以。

时间: 2024-11-08 18:56:08

模板-有关获取数组长度sizeof(array) / sizeof(array[0])的问题的相关文章

C/C++中获取数组长度的方法示例_C 语言

学过C/C++的人都知道,在C/C++中并没有提供直接获取数组长度的函数,对于存放字符串的字符数组提供了一个strlen函数获取其长度,那么对于其他类型的数组如何获取他们的长度呢? 其中一种方法是使用sizeof(array) / sizeof(array[0]), 在C语言中习惯上在使用时都把它定义成一个宏,比如: #define GET_ARRAY_LEN(array,len) {len = (sizeof(array) / sizeof(array[0]));} 而在C++中则可以使用模板

PHP获取数组长度或某个值出现次数的方法

 这篇文章主要介绍了PHP获取数组长度或某个值出现次数的方法,实例分析了count()与array_count_value()的使用技巧,需要的朋友可以参考下     本文实例讲述了PHP获取数组长度或某个值出现次数的方法.分享给大家供大家参考.具体分析如下: count():对数组中的元素个数进行统计; 例如: ? 1 2 $arr = Array('0','1','2','3','4'); echo count($arr); // 输出 5 sizeof()和count()具有同样的用途,这

PHP获取数组长度或某个值出现次数的方法_php技巧

本文实例讲述了PHP获取数组长度或某个值出现次数的方法.分享给大家供大家参考.具体分析如下: count():对数组中的元素个数进行统计; 例如: $arr = Array('0','1','2','3','4'); echo count($arr); // 输出 5 sizeof()和count()具有同样的用途,这两个函数都可以返回数组元素个数.可以得到一个常规标量变量中的元素个数,如果传递给这个函数的数组是一个空数组,或者是一个没有经过设定的变量,返回的数组元素个数就是0; array_c

php获取数组长度的方法(有实例)_php实例

在php中获取数组长度方法很简单,php为我们提供了两个函数可以计算一维数组长度,如count,sizeof都可以直接统计数组长度哦,下面我们来看几个实例吧.php如何获取数组的长度,使用php函数count(),或是sizeof()例如: 复制代码 代码如下: $arr = Array('0','1','2','3','4'); echo count($arr);// 输出 5$arr = array('A','B','C');echo sizeof($arr);//输出3 sizeof()和

js 获取数组长度

  <!doctype html public "-//w3c//dtd xhtml 1.0 transitional//en" "http://www.w3.org/tr/xhtml1/dtd/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="conten

php检测数组长度的函数sizeof count

在php检测数组长度的函数有sizeof  count 下面看个简单实例*/ $colorlist = array("apple"=>"red", "grass"=>"green","sky"=>"blue","night"=>"black","wall"=>"white");

php 获取数组长度几种方法

php如何获取数组的长度,使用php函数count(),或是sizeof() 例如:  代码如下 复制代码 $arr = Array('0','1','2','3','4'); echo count($arr); // 输出 5   $arr = array('A','B','C'); echo sizeof($arr); //输出3 sizeof()和count()具有同样的用途,这两个函数都可以返回数组元素个数.可以得到一个常规标量变量中的元素个数,如果传递给这个函数的数组是一个空数组,或者

求助) Java中如何获取数组中的有效数据长度

问题描述 Java中如何获取数组中的有效数据长度?请各位大虾指点一二,谢谢!如:bytearr[]=newbyte[100];现在我向arr中输入任意数(-128~127),请问如何知道我已经输入多少个了呢? 解决方案 解决方案二:for循环呗遍历一次就行.解决方案三:使用一个变量如count记录,输入一个就把count加1.解决方案四:遍历吧解决方案五:要是那样存数,你不如用Vector或其它的,那个容易找,解决方案六:遍历是可以,问题是该用什么做基准值呢?看样子只能用动态数组了解决方案七:用

C/C++查看变量大小和数组长度

这里总结一下C/C++中查看变量大小,数组长度等的方法. 本文代码在windows 8.1下使用Dev-c编写,测试. strlen函数,查看字符串长度: 1 //头文件 2 #include <cstring>   //c++ 3 //或者 4 #include<string.h>  //c 5 //函数原型 6 extern unsigned int strlen(char *s) strlen做的是一个计数器的工作,函数传入一个char类型指针,从指针处开始扫描,直到碰到字符