2016-05-05 9 views
-2

私はC言語を学んでおり、次の短いプログラムを作成しました。それは配列をたどり、配列の各要素をランダムな値に割り当ててからそれらを出力することになっています。唯一の問題は、次のようなコンパイラエラーがあります。Cコンパイラがエラーをスローしました:オブジェクト 'random'が関数または関数ポインタではありません

called object ‘random’ is not a function or function pointer 

この理由は何ですか?私のコードは以下の通りです:

#include <stdio.h> 
#include <stdlib.h> 

int main(void) 
{ 
    int arr[5]; 
    int i; 
    int random; 

    for (i = 0; i < sizeof(arr)/sizeof(arr[0]); i++) 
    { 
      random = rand(); 
      arr[i] = random(); 
    } 

    for (i = 0; i < sizeof(arr)/sizeof(arr[0]); i++) 
    { 
      printf("%d", arr[i]); 
    } 
} 
+0

'int型ランダム、あなたがしようとしている意味stdlib''で ';'影関数 'long int型ランダム(無効)関数または関数ポインタではない整数を呼び出します。 clangやgccの '-Wshadow'でコンパイルして、これについてコンパイラが警告します。 'random()'を使うのかどうかは不明です。 –

+0

コンパイラの警告を有効にします。現代のコンパイラは、適切に有効になっていると警告します。 – Olaf

答えて

2

あなたが呼び出しようとしている関数と同じ名前の変数を定義しました。これは機能を「陰」にして電話することが不可能になります。

int random; 

よくあるエラーです。関連する一般的なものは、同じ名前の一般的なCライブラリ関数をオーバーライドする、read()またはsend()というプログラム内の関数を人々が定義するときです。

1

randomはタイプintの通常の変数なので、()演算子はその値を使用する必要はありません(使用しないでください)。

てみ

#include <stdio.h> 
#include <stdlib.h> 

int main(void) 
{ 
    int arr[5]; 
    int i; 
    int random; 

    for (i = 0; i < sizeof(arr)/sizeof(arr[0]); i++) 
    { 
      random = rand(); 
      arr[i] = random; 
    } 

    for (i = 0; i < sizeof(arr)/sizeof(arr[0]); i++) 
    { 
      printf("%d", arr[i]); 
    } 
} 

以上の単純な

#include <stdio.h> 
#include <stdlib.h> 

int main(void) 
{ 
    int arr[5]; 
    int i; 

    for (i = 0; i < sizeof(arr)/sizeof(arr[0]); i++) 
    { 
      arr[i] = rand(); 
    } 

    for (i = 0; i < sizeof(arr)/sizeof(arr[0]); i++) 
    { 
      printf("%d", arr[i]); 
    } 
} 
関連する問題