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

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;
}

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容