#include<stdio.h>
#include<stdlib.h>
#if 0
//struct_1 在main函数中定义结构体,并实现功能
int main(void)
{
struct results
{
float interim_results;
float end_results;
float average_scores;
}st;
printf("input interim_results:");
scanf("%f",&st.interim_results);
printf("input end_results:");
scanf("%f",&st.end_results);
st.average_scores = (st.interim_results+st.end_results)/2;
printf("%.2f\n",st.average_scores);
return 0;
}
#endif
#if 0
//struct_2 结构体指针
int main(void)
{
struct results
{
float interim_results;
float end_results;
float average_scores;
}; //这里不能有结构体变量名st
struct results *st = malloc(sizeof(struct results));
printf("input interim_results:");
scanf("%f",&st->interim_results);// ->
printf("input end_results:");
scanf("%f",&st->end_results);
st->average_scores = (st->interim_results+st->end_results)/2;
printf("%.2f\n",st->average_scores);
return 0;
}
#endif
#if 0
//struct_3 在main函数外面建立结构体
struct results
{
float interim_results;
float end_results;
float average_scores;
}; //这里不能有结构体变量名st
int foo(float *interim_results,float *end_results,float *average_scores)
{
*average_scores = (*interim_results+*end_results)/2;
}
int main(void)
{
struct results *st = malloc(sizeof(struct results));
printf("input interim_results:");
scanf("%f",&st->interim_results);// ->
printf("input end_results:");
scanf("%f",&st->end_results);
foo(&st->interim_results,&st->end_results,&st->average_scores);
printf("%.2f\n",st->average_scores);
return 0;
}
#endif
#if 0
//struct_4 构建没有参数和返回值的函数,更高级封装
struct results
{
float interim_results;
float end_results;
float average_scores;
}; //这里不能有结构体变量名st
void foo()
{
struct results *st = malloc(sizeof(struct results));
printf("input interim_results:");
scanf("%f",&st->interim_results);// ->
printf("input end_results:");
scanf("%f",&st->end_results);
st->average_scores = (st->interim_results+st->end_results)/2;
printf("%.2f\n",st->average_scores);
}
int main(void)
{
foo();
return 0;
}
#endif
#if 0
//struct_5 在main函数外面建立结构体,构建传递结构体指针并返回void的函数foo
struct results
{
float interim_results;
float end_results;
float average_scores;
}; //这里不能有结构体变量名st
void foo(struct results *st)
{
printf("input interim_results:");
scanf("%f",&st->interim_results);// ->
printf("input end_results:");
scanf("%f",&st->end_results);
st->average_scores = (st->interim_results+st->end_results)/2;
}
int main(void)
{
struct results *st = malloc(sizeof(struct results));
foo(st);
printf("%.2f\n",st->average_scores);
return 0;
}
#endif
#if 1
//struct_5 在main函数外面建立结构体,构建传递结构体指针并结构体指针的函数foo
struct results
{
float interim_results;
float end_results;
float average_scores;
}; //这里不能有结构体变量名st
struct results *foo()
{
struct results *st = malloc(sizeof(struct results));
printf("input interim_results:");
scanf("%f",&st->interim_results);// ->
printf("input end_results:");
scanf("%f",&st->end_results);
st->average_scores = (st->interim_results+st->end_results)/2;
return st;
}
int main(void)
{
struct results *st;
st = foo();
printf("%.2f\n",st->average_scores);
return 0;
}
#endif
有关结构体指针与函数传参返回值类型的六种方法
最新推荐文章于 2024-08-05 22:52:16 发布