區別
結構體變量
- 結構體變量作為形參,傳遞的是結構體變量本身,是一種值傳遞
- 形參結構體變量成員值的改變不影響對應的實參構體變量成員值的改變
結構體指針
- 結構體指針作為函數參數,傳遞的是指向結構體變量的本身
- 結構體指針指向的變量成員值的改變影響對應的實參構體變量成員值的改變
代碼
直接說有些抽象難懂,敲代碼演示一遍就很清楚了
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
struct stru{
int num;
};
//形參為結構體變量
void addNum(struct stru p, int num2)
{
p.num += num2;
}
//形參為結構體指針
void addNum2(struct stru *p, int num2)
{
if(!p) return; //確保指針不為空指針
p->num += num2;
}
int main(){
struct stru t;
t.num = 50;
addNum(t,5000);
printf("形參為結構體變量得到的結果為: %d\n", t.num);
addNum2(&t,5000);
printf("形參為結構體指針得到的結果為: %d\n", t.num);
return 0;
}
輸出結果
形參為結構體變量得到的結果為: 50
形參為結構體指針得到的結果為: 5050