【发布时间】:2019-05-10 04:42:19
【问题描述】:
我是一个完全的新手。当我运行程序并输入数据时,throw 函数只正确显示整数值,但不显示字符。
#include<stdio.h>
#include<string.h>
struct student_data{
char name[20],department[10];
int roll_num[0];
};
void collect(struct student_data data);
void throw(struct student_data student1);
int main(void){
struct student_data student1;
collect(student1);
throw(student1);
return 0;
}
void collect(struct student_data data1){
printf("Enter name:");
scanf(" %s",data1.name);
printf("Enter department:");
scanf(" %s",data1.department);
printf("Enter roll number:");
scanf(" %d",data1.roll_num);
}
void throw(struct student_data student1){
printf("%s\n",student1.name);
printf("%s\n",student1.department);
printf("%d\n",student1.roll_num[0]);
}
【问题讨论】:
-
C 中的参数按值传递。这意味着它们被复制,然后参数变量与调用函数时使用的变量断开连接。修改函数内部的本地副本不会修改原始的。您可能应该了解 指针 以及如何在 C 中模拟通过引用传递。
-
与
int roll_num[0];一起创建一个包含 0 个整数空间的数组。如果您只需要 1 个值,请坚持使用简单变量:int roll_num;;如果您需要一个数组,请使用 1 个或多个元素:int roll_num[3]; /* roll_num[0], roll_num[1], and roll_num[2] */