pragma mark 結(jié)構(gòu)體和函數(shù)
pragma mark 概念
/**
結(jié)構(gòu)體之間賦值 是 值傳遞, 相當(dāng)于拷貝
主要看函數(shù)的 形參
如果是 數(shù)據(jù)類(lèi)型 就是 值傳遞
如果是 地址 就是 就會(huì)影響外面的 實(shí)參
*/
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 結(jié)構(gòu)體和函數(shù) 傳遞結(jié)構(gòu)體
/*
struct Person sp = {24,"lyh"};
// 1.將結(jié)構(gòu)體的屬性傳遞給函數(shù), 在函數(shù)中修改形參 不會(huì)影響實(shí)參
printf("age = %i\n",sp.age);
// change(sp.age);
// 2.將結(jié)構(gòu)體名稱(chēng) 作為參數(shù)傳遞, 在函數(shù)中修改形參不會(huì)影響到實(shí)參
// 結(jié)構(gòu)體之間賦值 是值傳遞, 系統(tǒng)會(huì)將A結(jié)構(gòu)體的值 拷貝一份 到 B結(jié)構(gòu)體中
change(sp);
printf("age = %i\n",sp.age);
*/
/*
struct Person sp1 = {24,"lyh"};
struct Person sp2 = sp1; // 結(jié)構(gòu)體之間賦值 是 值傳遞, 相當(dāng)于拷貝
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 結(jié)構(gòu)體和函數(shù) 傳遞結(jié)構(gòu)體指針
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)
// 結(jié)構(gòu)體有作用域 要放到全局變量
//void change(struct Person value)
void change(struct Person *value)
{
// value = 99;
value->age = 100;
}