这样写是不可以的。
成都创新互联作为成都网站建设公司,专注网站建设公司、网站设计,有关成都企业网站定制方案、改版、费用等问题,行业涉及资质代办等多个领域,已为上千家企业服务,得到了客户的尊重与认可。
应该这么声明:
void days(struct student * judget)
{
//省略
}
struct student s;
s.year = year;
s.month = month;
s.day = day;
days(s);//这么使用
但是我不明白为什么结构体的名称是student啊,这个和学生没有关系,应该起个相关的名称,如time之类的,呵呵
fun函数的第二个参数之所以用指针,就是为了能把函数里面对这个参数做的改动保存下来
而你如果把*s=a[p];改成s=a[p];效果相当于,改了s的值,使其不再指向参数(函数
外部变量
m)的地址,虽然*s的值是正确的,但实际m的值则没有改变,所以在外面输出的时候,结果和预期不一致了
s=a[p];这个操作本身没有问题
1.可以把结构体作为参数啊,
2.不去取地址的意思,是引用的意思,函数执行时修改L的值,就直接的修改了实参的值,相当于地址传递了。
3.真正调用的时,如下:
SqList
tempStruct;
InitList_Sq(tempStruct)
这样就可以了。
呵呵
C语言中,所有的变量都存储在内存中,可以通过运算符获得变量的内存地址,函数调用时,只需要把普通变量前加上符号,就可以达到传递变量地址的目的。
例如:
定义一个结构体类型
struct Yearmonthday
{
int year, month, day;
};
定义相关函数,参数类型指定为结构体类型指针
void input(struct Yearmonthday *p1) //函数形参p1是结构体指针类型
{
printf("请输入年,月,日:");
scanf("%d,%d,%d",p1-year,p1-month,p1-day);
}
在主函数中定义一个结构体变量,调用相关函数,传递变量地址
int main()
{
struct Yearmonthday ymd;
input(ymd); //传递变量地址,以便带回数据
printf("date=%d/%d/%d\n", ymd.year, ymd.month, ymd.day ); //输出结果
return 0;
}