区别
结构体变量
结构体变量作为函数参数,传递的是结构体变量本身,是一种值传递形参结构体变量成员值的改变不影响对应的实参构体变量成员值的改变结构体指针
结构体指针作为函数参数,传递的是指向结构体变量的本身结构体指针指向的变量成员值的改变影响对应的实参构体变量成员值的改变代码
直接说有些抽象难懂,敲代码演示一遍就很清楚了
#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