2014-10-06 209 views
0

對此重新發布的道歉,因爲我不知道如何解釋我的問題,因爲這是我第一次使用堆棧溢出。我希望有人能夠幫助我在這項測驗中爲我的學習做出貢獻。將數組傳遞給函數

我已經研究過這個程序,但我不知道它是否與arraySize上的測驗問題有關。

問題如下: 我們將數組ai傳遞給函數fillArray。什麼傳遞給函數?答案是單個內存地址,而不是10個整數!這就是爲什麼我們可以使用該函數來填充10個數字的數組ai。 完成上述函數fillArray,以便它從用戶讀取arraySize數量的整數,並用這些數字填充數組。 編寫一個驅動程序,用不同大小的整數數組測試函數。 請注意函數fillArray中的形式參數int array []可以更改爲int *數組。通過修改和測試你的代碼來驗證這一點。

我的代碼如下:

#include <stdio.h> 
#define MAX 10 

int fillArray(int array[], int arraySize); 
void print_intaray(int array[], int arraySize); 
main() 
{ 
    int ai, exam_scores[MAX]; 

    printf("***List of Array***\n\n"); 
    ai = fillArray(exam_scores, MAX); 
    print_intaray(exam_scores, ai); 
} 

int fillArray(int array[], int arraySize) 
{ 
    int ai, count = 0; 

    printf("Type array, EOF to quit\n"); 

    while ((count < arraySize) && (scanf("%d", &ai) !=EOF)) 
    { 
     array[count] = ai; 
     count++; 
    } 
    return count; 
} 

void print_intaray(int array [], int arraySize) 
{ 
    int i; 
    printf("\n***Your Arrary***\n\n"); 
    for (i = 0; i<arraySize; i++) 
     printf("%d\n", array[i]); 
} 

我新的編程,我希望我的問題可以以某種方式解決。

感謝觀看:)

+1

那麼,你的問題到底是什麼? – OldProgrammer 2014-10-06 18:12:04

+0

是什麼?重點是什麼? – HuStmpHrrr 2014-10-06 18:13:07

+0

我明白你想要做什麼,但你的問題是什麼? – user1336087 2014-10-06 18:13:10

回答

0

假設的問題是「爲什麼int array[]int *array相當於函數參數」:

我沒有太大的一個C專家,但據我所知陣列(在C )很大程度上只是您追加某個偏移量的指針。告訴C,你期望int myarray[]與期待指向整數的指針幾乎相同(int *array)。如果增加指針,則可以訪問數組中的下一個元素。這也被稱爲指針算術。

C編譯器將背景中的數組語法(如foo[3])轉換爲*(*foo+3)之類的東西,但您也可以通過處理指針來完成此操作。

+0

感謝您的迴應Thom,我明白了您的意思,但是我更擔心這個問題,即要求用戶輸入數組來填充數組大小,這是否意味着輸出基於用戶輸入的內容?因爲基於上面的代碼,我的輸出正是我輸入的內容。此外,如果問題是要求編寫驅動程序來測試函數,那麼我是否正確地編寫了基於上述的代碼?在某種程度上混淆了這個問題本身。對不起,我的英語不好。 – 2014-10-06 18:30:39

+0

我不確定驅動程序是什麼意思,但它似乎確實需要從用戶處獲取arraySize輸入並將它們存儲在數組中。 – 2014-10-06 20:01:20

+0

Downvoter:請留下評論,以便我可以改進我的問題! – 2014-10-06 20:01:36