2 sara0010 sara0010 于 2015.07.09 08:32 提问

数据结构 Triplet &T 中的&是什么意思 10C

#include "Common.h"
#define ElemType int

typedef ElemType * Triplet;//由InitTriplet分配3个元素存储空间

//--------------基本操作的函数,及说明----------------
Status InitTriplet(Triplet &T, ElemType v1, ElemType v2, ElemType v3);
//操作结果:构造了三元组T,元素e1,e2和e3的值分别被赋以参数v1,v2,v3的值。

triplet 相当于 int*  那么Triplet &T不就是 int* &T 了吗? 要是int* T 还好理解,就是定义了一个指向整型的指针。
求解答

6个回答

happywanderer2010
happywanderer2010   2015.07.09 08:42

你是不是可以理解为指针的地址呢?本人不是很了解C++只是给你一个想法

caozhy
caozhy   Ds   Rxr 2015.07.09 14:28

Triplet &T
这里是引用,改变引用会反映到实参上。

将指针作为引用,那么实参可以得到一个由函数内产生的指针(不通过返回值)。一般我们希望函数内分配内存,或者创建对象,我们一般就这么做。

u012216727
u012216727   Ds   Rxr 2015.07.09 09:13

这个你可以看看相关的语法书籍对照着看看不就知道了

oyljerry
oyljerry   Ds   Rxr 2015.07.09 10:55

指针引用,相当于二级指针,等于就是你函数除了可以修改指针指向的内容,还可以修改指针本身

John_ToString
John_ToString   2015.07.09 18:51

int* &T 这条语句在c语言中是不能够被语法支持的,因为c语言中没有引用的概念,所以他只能出现在c++语法中,下面我将阐述我的观点,第一点:c++中引用的概念。引用指的是变量的别名,改变引用就等于改变实参本身,关于引用其他概念请体温会者自己去查阅相关c++书籍。第二点:#define与typedef的区别,前者是宏定义,程序预编译(预处理)的时候进行替换,没有任何语法检查;而typedef是具有类型转定义的功能,所以尽量少用并且慎用#define(例如在有括号的时候)。

GKatHere
GKatHere   2015.07.09 22:14

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;
}

Csdn user default icon
上传中...
上传图片
插入图片