在c語言中,直接在引數中宣告陣列變數是無法實現傳值傳參的,這時只會把陣列的首位址傳過去。將陣列放置到乙個struct中進行傳參,可以實現傳值的方式。例如下面的程式:
#include struct tag ; struct tag orange, lime, lemon; struct tag twofold(struct tag s) return s; } int main() lime = twofold(orange); for(i=0; i<10; i++) lemon = lime; for(i=0; i<100; i++) for(i=0; i<10; i++) for(i=0; i<10; i++) }
輸出結果:
before: lime.a[0] = 2 before: lime.a[1] = 2 before: lime.a[2] = 2 before: lime.a[3] = 2 before: lime.a[4] = 2 before: lime.a[5] = 2 before: lime.a[6] = 2 before: lime.a[7] = 2 before: lime.a[8] = 2 before: lime.a[9] = 2 lemon.a[0] = 7 lemon.a[1] = 7 lemon.a[2] = 7 lemon.a[3] = 7 lemon.a[4] = 7 lemon.a[5] = 7 lemon.a[6] = 7 lemon.a[7] = 7 lemon.a[8] = 7 lemon.a[9] = 7 after: lime.a[0] = 2 after: lime.a[1] = 2 after: lime.a[2] = 2 after: lime.a[3] = 2 after: lime.a[4] = 2 after: lime.a[5] = 2 after: lime.a[6] = 2 after: lime.a[7] = 2 after: lime.a[8] = 2 after: lime.a[9] = 2
參考《c專家程式設計》
C語言中 使用方式
域寬 轉換字元 乙個轉換說明以 開始,以轉換字元結尾,域寬部分是可選的,每個轉換說明對應於乙個輸出引數,改引數被轉化換成有轉換說明規定的資料格式後輸出。注 如果 後面是非轉換字元,多數編譯系統將它作為普通字元輸出。域寬說明字元 意義 減號 在指定區域按左對齊方式輸出 沒有減號時為右對齊 加號 輸出正...
C 語言中 struct 的陷阱
假設我們要為某大學寫乙個工資管理程式。首先是表示員工的 employee 類 employee.cs 01 namespace skyiv.ben 02 06 public string name 07 public decimal salary 08 09 public employee stri...
C 語言中 struct 的陷阱
假設我們要為某大學寫乙個工資管理程式。首先是表示員工的 employee 類 employee.cs 01 namespace skyiv.ben 02 06 public string name 07 public decimal salary 08 09 public employee stri...