问题描述
- 数据结构 Triplet &T 中的&是什么意思 10C
- #include ""Common.h""
#define ElemType inttypedef ElemType * Triplet;//由InitTriplet分配3个元素存储空间
//--------------基本操作的函数,及说明----------------
Status InitTriplet(Triplet &T ElemType v1 ElemType v2 ElemType v3);
//操作结果:构造了三元组T元素e1e2和e3的值分别被赋以参数v1,v2,v3的值。triplet 相当于 int* 那么Triplet &T不就是 int* &T 了吗? 要是int* T 还好理解,就是定义了一个指向整型的指针。求解答
解决方案
你是不是可以理解为指针的地址呢?本人不是很了解C++只是给你一个想法
解决方案二:
Triplet &T
这里是引用,改变引用会反映到实参上。
将指针作为引用,那么实参可以得到一个由函数内产生的指针(不通过返回值)。一般我们希望函数内分配内存,或者创建对象,我们一般就这么做。
解决方案三:
这个你可以看看相关的语法书籍对照着看看不就知道了
解决方案四:
指针引用,相当于二级指针,等于就是你函数除了可以修改指针指向的内容,还可以修改指针本身
解决方案五:
int* &T 这条语句在c语言中是不能够被语法支持的,因为c语言中没有引用的概念,所以他只能出现在c++语法中,下面我将阐述我的观点,第一点:c++中引用的概念。引用指的是变量的别名,改变引用就等于改变实参本身,关于引用其他概念请体温会者自己去查阅相关c++书籍。第二点:#define与typedef的区别,前者是宏定义,程序预编译(预处理)的时候进行替换,没有任何语法检查;而typedef是具有类型转定义的功能,所以尽量少用并且慎用#define(例如在有括号的时候)。
解决方案六:
Triplet &T 就是相当于 (nt*) &T;
所以:
Status InitTriplet(Triplet &T ElemType v1 ElemType v2 ElemType v3)
{
T[0] = v1;
T[1] = v2;
T[2] = v3;
return 0;
}