[問題] 新手請教call by value的問題

看板C_and_CPP (C/C++)作者 (悔)時間14年前 (2011/09/23 22:55), 編輯推噓2(204)
留言6則, 2人參與, 最新討論串1/1
開發平台(Platform): (Ex: VC++, GCC, Linux, ...) C 最近在看 C語言教學手冊 洪維恩 第三版 一直看不出來這2段程式的差異在哪.. 8-45頁: #include <stdio.h> #include <stdlib.h> void add10(int,int) { a=a+10; b=b+10; } int main(void) { int a=3,b=5; printf("呼叫函數add10()之前: "); printf("a=%d b=%d\n",a,b); add10(a,b); printf("呼叫函數add10()之後: "); printf("a=%d b=%d\n",a,b); system("pause"); return 0; } /* output---------------------- 呼叫函數add10()之前: a=3, b=5 呼叫函數add10()之後: a=3, b=5 -----------------------------*/ 9-30頁 #include <stdio.h> #include <stdlib.h> void func(int a) /* 自訂函數func() */ { printf("於func()裡,a=%d\n",a); } int main(void) { int a=13; printf("於main()裡,a=%d\n",a); func(a); /* 這是傳值呼叫的機制 */ system("pause"); return 0; } /* output---------------------- 於 main()裡,a=13 於 func()裡,a=13 -----------------------------*/ 這兩段都是講傳值呼叫 想請教為什麼第一段傳不了 第二段卻可以? -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 59.126.29.202 ※ 編輯: wheree 來自: 59.126.29.202 (09/23 22:57)

09/23 22:59, , 1F
是printf()的時機不一樣
09/23 22:59, 1F

09/23 23:05, , 2F
感謝大大 耍笨了XD
09/23 23:05, 2F

09/23 23:13, , 3F
你要用變數的值 透過function 去做什麼事情, 用
09/23 23:13, 3F

09/23 23:14, , 4F
call by value.
09/23 23:14, 4F

09/23 23:15, , 5F
如果 要透過function 去改變 外面變數裡的內容, 就不能
09/23 23:15, 5F

09/23 23:15, , 6F
用 call by value 的方式.
09/23 23:15, 6F
文章代碼(AID): #1EV9tjSf (C_and_CPP)
文章代碼(AID): #1EV9tjSf (C_and_CPP)