我正在学习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]);
}
}
答案 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]);
}
}