如果数据对象是数组,则只能使用指针。
如果数组对象是结构,则使用引用或指针。
如果数据对象是类对象,则使用引用。
这些回答等于没说一样
因为在C/C++里,数组的长度是未知的。没有办法在运行的时候知道数组的长度。(编译的时候可以知道长度)
而参数的在堆栈上的复制,需要知道长度,才知道复制多少。结构体、一般类型都可以知道长度。
为了编译器对语法一致性的要求而已,实际上,你把数组直接定义为指针(本质上是一回事),也就可以引用了。
例如:
int* a =new int[3] {1,2,3};
int*& c = a;
cout << c[1] << endl;
引用是明确的,已知的地址(包括起止位置)的变量别名,一个基本要求是不能为空;指针,尤其void这种指针,指向哪里都可以,包括null的
东西,起安全有效性是程序员与编译器与连接器共同保障的。
因为数组的长度未知,所以不能使用引用,而结构体的内容确定,可以使用引用。而且指针如果所指向的对象,需要用分支语句加以确定,或者在中途需要改变他所指的对象,那么在它初始化之后需要为他赋值,而引用只能在初始化时指定被引用的对象。