数组和指针问题,计算数组大小
直接上代码
#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);
}
[解决办法]
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;
}