有关结构体指针与函数传参返回值类型的六种方法

#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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值