2014-02-12 201 views
0

我想通過一個int數組作爲指向函數的指針。目前,我發現了以下錯誤:expected 'int (*)[100]' but argument is of type 'int *' void.傳遞數組指針作爲參數

void count_frequency(int *number) { 
    int i; 
    int len = sizeof number/sizeof(int); 
    printf("%i\n", len); 
    printf("reached here"); 
    for(i = 0; i < len; i++){ 
     printf("%i\n", &number[i]); 
    } 
} 



int main(){ 
    int i; 
    int table[MAX]; 
    int len = sizeof table/sizeof(int); 
    printf("reached before loop\n"); 

    for(i = 0; i < len; i++){ 
     table[i] = random_in_range(0, 20); 
    } 
    count_frequency(table); 

    //printf("%i", sizeof(table)/sizeof(int)); 
    return 0; 
} 
+1

'INT LEN =的sizeof數/的sizeof(int)的;'手動檢查什麼此返回上不同尺寸的陣列。 – this

+0

什麼返回random_in_range函數? –

+0

閱讀[奇怪的行爲時,打印數組在C中?](http://stackoverflow.com/questions/18009725/weird-behavior-when-printing-array-in-c/18009736#18009736) –

回答

1

您發佈的代碼與您收到的錯誤不一致。唯一錯誤的事情是:

  • 記住%d或%我需要傳遞的參數整
  • 我承擔的 「random_in_range」 函數使用RAND()如下

    #include <stdio.h> 
    
    #define MAX 100 
    
    
    int random_in_range(int a, int b)//this function will generate a random number between specified range 
    { 
        return (a+rand()%(b-a+1)); 
    } 
    
    
    void count_frequency(int *number) { 
         int i; 
         int len = sizeof number/sizeof(int); 
         printf("%i\n", len); 
         printf("reached here"); 
         for(i = 0; i < len; i++){ 
         printf("%d\n", number[i]); 
         } 
    } 
    
    
    
    int main(){ 
         int i; 
         int table[MAX]; 
         int len = sizeof table/sizeof(int); 
         printf("reached before loop\n"); 
    
         for(i = 0; i < len; i++){ 
          table[i] = random_in_range(0, 20); 
         } 
         count_frequency(table); 
    
         printf("%i", sizeof(table)/sizeof(int)); 
         return 0; 
    } 
    

http://ideone.com/LG96iA

0

據我所知,「的sizeof號」將返回指針(4個字節),而不是數組的大小尺寸。