学习图的时候发现了一条很奇怪的代码: scanf(&G->vexs[i])
整个代码是:
```c
void CreateMGraph(MGraph*G)
{
int i,j,k,w;
printf("Input the numVertexes and the numEdges:\n");
scanf("%d %d",&G->numVertexes,&G->numEdges);
for(i=0;i<G->numVertexes;i++)
scanf(&G->vexs[i]);//就是这一句
for(i=0;i<G->numVertexes;i++)
for(j=0;j<G->numEdges;j++)
G->arc[i][j]=INFINITY;
for(k=0;k<G->numEdges;k++)
{
printf("输入边(i,j)的下标i,j和权数:");
scanf("%d %d %d",&i,&j,&w);
G->arc[i][j]=w;
G->arc[j][i]=G->arc[i][j];
}
}
```
scanf(&G->vexs[i]);//就是这一句
应该是赋0了
#include<stdio.h>
int main()
{
int n;
scanf(&n);
printf("n=%d",n);
return 0;
}
格式说明由“%”和格式字符组成,如%d%f等。它的作用是将输出的数据转换为指定的格式输出。
但是像这种scanf(&G->vexs[i]); 我们常规来说,不使用这种方式,像这里这样使用我感觉不合理。
你如果是在C++中cin>>G->vexs[i];是可以的,但是在C中,scanf(&G->vexs[i]);,尽量还是要符合格式控制输入的格式。
希望对题主有所帮助,可以的话还请点下采纳!