C编译器抛出错误:调用对象'random'不是函数或函数指针

时间:2016-05-05 03:21:50

标签: c arrays

我正在学习C,并做了以下短期课程。它应该遍历数组,并将数组中的每个元素分配给一个随机值,然后将它们打印出来。唯一的问题是,编译错误说明:

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]);
    }
}

2 个答案:

答案 0 :(得分:3)

您已定义了一个与您尝试调用的函数同名的变量。这个&#34;阴影&#34;这个功能让人无法打电话:

int random;

相当常见的错误;一个相关的流行的是当人们在他们的程序中定义一个名为read()send()的函数时,它会覆盖相同名称的流行C库函数。

答案 1 :(得分: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]);
    }
}