C語言結構體指針與結構體變量作形參的區別


區別

結構體變量

  • 結構體變量作為形參,傳遞的是結構體變量本身,是一種值傳遞
  • 形參結構體變量成員值的改變不影響對應的實參構體變量成員值的改變

結構體指針

  • 結構體指針作為函數參數,傳遞的是指向結構體變量的本身
  • 結構體指針指向的變量成員值的改變影響對應的實參構體變量成員值的改變

代碼

直接說有些抽象難懂,敲代碼演示一遍就很清楚了

#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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM