在C language ,呼叫副函數中,陣列的資料都是用傳址方式傳遞,請問要如何\"直接\"將陣列的值,傳送到函數中,而非\"間接\"在函數中複製該陣列的值。
例如
char a[500];
int b=0;
.............
.............
.............
c(b); // 傳遞變數b的值
d(.......); // 傳遞變數a陣列的值這應該怎樣寫...
2006-08-26 09:29:41 · 7 個解答 · 發問者 ㄚ旺 5 in 電腦與網際網路 ➔ 程式設計
C 不允許直接傳值,若一定需要用原始值時, 直接宣告成全局變數讓副函數去抓
2006-10-19 21:41:57 · answer #1 · answered by arniwarp a 2 · 0⤊ 0⤋
#include
void tran(char *x)
{
printf("%s\n",x);
}
void main()
{
char a[]="abcde";
tran(a);
}
2006-08-28 02:16:41 · answer #2 · answered by 祥 1 · 0⤊ 0⤋
是傳陣列中的某一個值,還是你想一次傳整個陣列的值過去呢?
2006-08-27 11:02:52 · answer #3 · answered by Almond 6 · 0⤊ 0⤋
實在不懂你要啥!
你要:
A. 等效於傳值:
a. 它傳的是 copy 版?:主程式自己copy一份傳去。
b. 副程式不能改原值?(資料安全性):用 const 去修飭。
B. 真實等於傳值:應該是不行。
2006-08-27 01:11:24 · answer #4 · answered by ? 7 · 0⤊ 0⤋
你是要傳值傳"整個陣列"?, 那只有自己複製一份囉
2006-08-27 00:18:04 · answer #5 · answered by ? 4 · 0⤊ 0⤋
d(a); 是傳址没錯
我想要知道是否能傳值
2006-09-07 21:40:36 補充:
test
printf("aaaaa");
2006-09-07 21:41:26 補充:
printf("aaaaa");
2009-10-17 02:54:12 補充:
1.234567890
2006-08-26 19:37:54 · answer #6 · answered by ㄚ旺 5 · 0⤊ 0⤋
不太懂你的意思 @@"
傳址, 請問是以下這樣嗎 ...
d(a);
void d(int *arr)
{
...
}
它不是 copy 一份 a 陣列,而是直接傳原先的 a 陣列列位址給該函數...
2006-08-26 16:26:45 · answer #7 · answered by 榮章 4 · 0⤊ 0⤋