c++数组的引用传递
#include<iostream>
using namespace std;
class lei
{
private:
int i;
public:
lei(int ii){i=ii;}
int showi(){return i;}
};
void hanshu(lei &leia);//????
int main()
{
lei leia[3]=
{
lei(12),
lei(23),
lei(33),
};
hanshu(leia);//????
return 0;
}
void hanshu(lei &leia)//????
{
for(int i=0;i<3;i++)//希望用这种形式调用对象数组
{
cout<<leia[i].showi();
}
}//如上所述,希望将对象数组用引用传递至函数内,然后在函数内用lei[i]的形式使用对象数组。该怎么传递呢?
[解决办法]
// ConsoleApplication1.cpp : Defines the entry point for the console application.
//
#include "stdafx.h"
#include <iostream>
using std::cout;
typedef int(&ARRAYREFERENCE)[10];
//定义指向int [10]数组的组引类型ARRAYREFERENCE
//调用
void testrefcall(ARRAYREFERENCE a)
{
for(int i=0;i<10;++i)
{
cout<<a[i]<<std::endl;
}
}
int _tmain(int argc, _TCHAR* argv[])
{
int a[10];
for(int i=0;i<10;++i)
{
a[i]=i+2;
}
//声明指向int a[10]数组的引用
//ARRAYREFERENCE pa=a;
int(&pa)[10]=a;
testrefcall(pa);
getchar();
return 0;
}
关键在于如何声明数组的引用类型:
typedef int(&ARRAYREFERENCE)[10];
[解决办法]
也可以用指针加数组维数,楼上的用法可以指定数组维数
[解决办法]
void Tesxt(int*& a,int nNum)
{
int x=a[0];
}
[解决办法]
#include<iostream>
using namespace std;
class lei
{
private:
int i;
public:
lei(int ii){i=ii;}
int showi(){return i;}
};
void hanshu(lei (&leia)[3]);//数组引用与数组大小相关,必须明确数组大小,不能为零
int main()
{
lei leia[3]=
{
lei(12),
lei(23),
lei(33),
};
hanshu(leia);
return 0;
}
void hanshu(lei (&leia)[3])//
{
for(int i=0;i<3;i++)
{
cout<<leia[i].showi();
}
}