C++中ElemType &e和ElemType* e 一个意思吗?

之前定义ElemType为int型,ElemType &e意思是e的地址类型为整型,那ElemType* e和ElemType &e是一个意思吗?

ElemType &e; 其中e是引用。
ElemType* e; 其中e是指针。

引用(reference)是c++对c语言的重要扩充。引用就是某一变量(目标)的一个别名,对引用的操作与对变量直接操作完全一样。
声明方法:类型标识符 &引用名=目标变量名。
使用方法:直接使用.操作符就可以进行对象操作。
特点:必须进行初始化,且不能通过修改而指向其他对象。

指针(Pointer)是编程语言中的一个对象,利用地址,它的值直接指向(points to)存在电脑存储器中另一个地方的值。由于通过地址能找到所需的变量单元,可以说,地址指向该变量单元。
声明方法:类型标识符 *引用名=&目标变量名。
使用方法:使用(*e).或者e->操作符进行对象操作。
特点:可以初始化为任意值,可以修改指向的对象。

在使用方面,引用可以使用指针进行代替。指针在某些情况下可以使用引用进行代替。
从类型安全的角度考虑,最好多用引用,少用指针。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2015-05-01
您好,这个要看函数要实现的功能而定,比如void insert(int i,ElemType &e)函数从名字上看其作用就是将整数 i 插入ElemType链表 e 中,函数调用中对e的值的改变必须在函数外生效,所以应该用第二种形式 void insert(int i,ElemType &e)。
如果要求函数中对实参值的改变不影响函数外的值,则用第一种形式void insert(int i,ElemType e)
void insert(int i,ElemType e)中参数e是值传递,调用insert函数返回后实参的值不会改变。
而void insert(int i,ElemType &e)中e传递的引用,如果insert函数中改变了e的值,相应的实参值也会改变。
比如下面的程序

#include <stdio.h>
#include <stdlib.h>
typedef int ElemType;
void insert(int i ,ElemType& e)
{
e=45;
}

main()

{
int e=3;
insert(0,e);
printf("after call insert e=%d",e);
//system("pause");
}
最后打印出来的是e=45,而将void insert(int i ,ElemType& e)改为void insert(int i ,ElemType e)最后打印出来的就是e的原始值e=3本回答被网友采纳
相似回答