c++ 中的是&什么意思?在c语言中应该如何使用

来源:百度知道 编辑:UC知道 时间:2024/06/23 19:18:12
void createGraph(MGraph &G) //输入图
{
int i,j,k,w;

printf("Input NO.of nodes and edges of Fork:");
scanf("%d,%d",&G.node,&G.edge);
getchar();
printf("\n\n");
printf("Input nodes of Fork:");
for(i=1;i<=G.node;i++)
{
scanf("%c",&G.vexs[i]);
getchar();
}
printf("\n\n");
printf("Input the nodes of an edge and its weight:\n");
for(k=0;k<G.edge;k++)
{char v1,v2;
scanf("%c", &v1);getchar();
scanf("%c", &v2);getchar();
scanf("%d", &w); getchar();
i=Location(G,v1);
j=Location(G,v2);
G.edges[i][j]=w;
G.edges[j][i]=w;
}
}
像这个函数中的参数为什么是&G,而不是G就行了呢?(MGraph是我提前定义的一个结构体)

&G是引用的意思,今天才老师讲了,也就是说它是给实参取别名,C++支持引用,但TURBLE C不支持,给你个简单的看看就知道了,
#include "stdio.h"

void test(int &x)
{
x=x+10;
}
void main()
{
int j=20;
test(j);
printf("%d",j);
}
要是你把&x变成x,就得不到30,而只能得20。
冒着被老师逮的危险给你说,给我加分吧!不说了

void createGraph(MGraph &G)这句C里边编译应该不通过,这里的&是引用类型,C里边没有引用类型,有指针类型,对一个变量前面加&表示取它的地址。

因为你的函数没有返回G,如果传的是G在这个函数改变的在回到主调函数出就没有了,而用&G,是引用,在这个函数里做的改变在主调函数里就会改变了

传参数的问题,三种传参数:值传递、引用传递、指针传递、后两种效果一样的

&G是指针所指向变量的地址空间。而G只是一个变量名,输入参数必须通过指针地址才能找到那个数的值。

&是指针所指向变量的地址空间

取得变量地地址.