十天学会C语言程序员

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

2016-05-06  本文已影响42人  liyuhong165

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

上一篇下一篇

猜你喜欢

热点阅读