請教一個陣列傳遞的問題[xx(] |
尚未結案
|
kingofhippo
一般會員 ![]() ![]() 發表:1 回覆:1 積分:0 註冊:2004-06-28 發送簡訊給我 |
以下是我的主程式
#pragma hdrstop
#include "arrange.h"
#include
|
cashyy
高階會員 ![]() ![]() ![]() ![]() 發表:117 回覆:322 積分:212 註冊:2004-04-30 發送簡訊給我 |
陣列的傳遞方式 傳遞陣列其實就是在傳遞一個指標。 一、實際參數就是陣列名稱。 二、形式參數有二種寫法: 1.陣列型態 陣列名稱[] 如: void sub(int y[]) { } 2.指標型態 指標變數 如: void sub(int *y) { } ////////////////////////////// 一小斷程式,說明陣列的傳遞: void main() { void add_one(); void print_array(); int a[5]={1,2,3,4,5}; add_one(a); print_array(a); } void add_one(int b[]) { int i; for(i=0;i<5;i ) b[i] ; } void print_array(int *p) { int i; for(i=0;i<5;i ) printf("%d",p[i]); } 執行結果:23456 |
kingofhippo
一般會員 ![]() ![]() 發表:1 回覆:1 積分:0 註冊:2004-06-28 發送簡訊給我 |
首先感謝上面這位大大的回覆
傳遞陣列跟指標的這個觀念我了解
但是還是沒法理解為什麼無法正常存取陣列的內容
我的程式平台是C BUILDER 6.0
單步執行來檢查城市所輸出的陣列內容皆是正確的
但若不是單步執行就會出錯 舉個例子來說
現在有一個陣列長度為10
int randgen[10]={0,1,2,3,4,5,6,7,8,9};
將陣列傳入函數中做亂數排序,以單步執行輸出每一次的排序結果,結果如下
9 3 7 8 4 0 2 6 1 5
1 6 5 9 3 2 0 4 8 7
7 8 9 2 5 0 1 6 4 3
...
以上為正確結果
但若是不使用中斷點單步執行的話一次執行完畢的結果則會如下
9 3 7 8 4 0 2 6 1 5
9 3 7 8 4 0 2 6 1 5
9 3 7 8 4 0 2 6 1 5
9 3 7 8 4 0 2 6 1 5
...
每一次的排序結果接相同等於祇存取到一次而已 發表人 - kingofhippo 於 2005/02/19 15:04:24
|
justdo
高階會員 ![]() ![]() ![]() ![]() 發表:2 回覆:359 積分:222 註冊:2004-08-17 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |