美文网首页十天学会C语言程序员
C语言day09-18结构体和函数

C语言day09-18结构体和函数

作者: liyuhong165 | 来源:发表于2016-05-06 10:11 被阅读42次

    pragma mark 结构体和函数

    pragma mark 概念

    /**
    结构体之间赋值 是 值传递, 相当于拷贝
    主要看函数的 形参
    如果是 数据类型 就是 值传递
    如果是 地址 就是 就会影响外面的 实参
    */

    pragma mark 代码

    #include <stdio.h>
    struct Person {
        int age;
        char *name;
    };
    //void change (int value);
    //void change(struct Person value);
    void change(struct Person *value);
    
    int main()
    {
    #warning 结构体和函数 传递结构体
    
        /*
        struct Person sp = {24,"lyh"};
        
        // 1.将结构体的属性传递给函数, 在函数中修改形参 不会影响实参
        printf("age = %i\n",sp.age);
    //    change(sp.age);
        // 2.将结构体名称 作为参数传递, 在函数中修改形参不会影响到实参
        // 结构体之间赋值 是值传递, 系统会将A结构体的值 拷贝一份 到 B结构体中
        change(sp);
        printf("age = %i\n",sp.age);
         */
        
        /*
        struct Person sp1 = {24,"lyh"};
        struct Person sp2 = sp1;    // 结构体之间赋值 是 值传递, 相当于拷贝
        
        printf("sp1.age = %i\n",sp1.age);
        sp2.age = 998;
        printf("sp1.age = %i\n",sp1.age);
        printf("sp2.age = %i\n",sp2.age);
        */
    #warning 结构体和函数 传递结构体指针
        struct Person sp1 = {24,"lyh"};
        printf("sp1.age = %i\n",sp1.age);
        change(&sp1);
        printf("sp1.age = %i\n",sp1.age);
    
        return 0;
    }
    //void change (int value)
    // 结构体有作用域 要放到全局变量
    //void change(struct Person value)
    void change(struct Person *value)
    
    {
    //    value = 99;
        value->age = 100;
    }
    
    

    相关文章

      网友评论

        本文标题:C语言day09-18结构体和函数

        本文链接:https://www.haomeiwen.com/subject/gkqjrttx.html