【发布时间】:2018-07-03 21:40:35
【问题描述】:
我正在尝试使用结构和函数创建联系人列表。目前我的代码可以编译,但结构的成员没有像我试图做的那样在函数之外被修改。这是我的代码(删除了一些长度的行)
#include <stdio.h>
#include <stdlib.h>
struct ContactInfo
{
char fname[50];
char lname[50];
};
struct ContactInfo gc;
void getContactInfo(struct ContactInfo gc)
{
printf("First Name: ");
scanf("%s", gc.fname);
printf("\nLast Name: ");
scanf("%s", gc.lname);
}
void showContactInfo(struct ContactInfo gc)
{
printf("* First Name: %s \n", gc.fname);
printf("* Last Name: %s \n", gc.lname);
}
int main()
{
getContactInfo(gc);
showContactInfo(gc);
return 0;
}
【问题讨论】:
-
你在传递价值。通过 ref 是声明中的 foo&(注意“&”)。
-
@DaveS C 没有引用。
-
melpomene 是正确的。如果你想使用“引用”,你必须使函数 void func(struct type * s),然后使用 & 传递你的结构,传递指针
-
scanf%s从根本上讲是不安全的(您正在将无限输入读取到固定大小的缓冲区中)。此外,使用scanf进行用户输入通常是个坏主意。考虑改用fgets。 -
函数不返回任何内容的事实与问题没有直接关系。
标签: c pointers data-structures