读书人

数组和指针有关问题计算数组大小

发布时间: 2013-01-05 15:20:39 作者: rapoo

数组和指针问题,计算数组大小
直接上代码



#include <stdio.h>

unsigned char meta[] = {0x00, 0xFF};

void fun( unsigned char* meta )
{
int len = sizeof(meta)/sizeof(meta[0]);

printf("%d========\n", len);
}

int main()
{
int len = sizeof(meta)/sizeof(meta[0]);

printf("%d\n", len);
fun(meta);

return 0;
}


也就是说,我如果把一个数组当做参数传给一个函数处理,如果在函数中算出数组的大小?
[解决办法]
不,楼主,我告诉你可以用如下的代码知道长度,当然,如果你把数组用普通的方法传给函数,则会退化成指针的,此时得不到长度,想知道长度,只能用我的那个方法:

#include <iostream>
using namespace std;

template<typenametype, intuLen>
voidfunction(type (&array)[uLen]){
cout<<"数组的长度是:"<<uLen<<endl;
}

int main(){
intiarray[100];
function(iarray);
doublelfarray[123];
function(lfarray);
}

[解决办法]
引用:
4楼的方法可以啊,能解释一下function(type (&array)[uLen])这里是什么意思么?


void han(unsigned char (&)[2])
{
printf("2\n");
}

template<int n>
void fun(unsigned char (&)[n])
{
printf("%d\n",n);
}

int main()
{
unsigned char meta[]={0x00,0xff};
unsigned char (&r)[2]=meta; // 数组的引用
han(meta); // 普通函数
fun(meta); // 模板函数
return 0;
}

读书人网 >C++

热点推荐