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