如何在C中使用“ int”参数调用函数?

时间:2019-04-21 11:19:07

标签: c

我一直在用C编写代码,我需要定义一个参数类型为int的函数。基本上,我想检查一个数字,但是,这个数字可能是13位,15位或16位数字。我将数字分成一个数组,这样我可以单独使用每个数字,并且创建了一个for循环以便进行一些处理。我只希望for循环的最大数量是一个变量。

我尝试编写一个for循环,但是将最大数量作为变量R而不是数字。问题在于,除非我初始化在主函数中调用函数时要使用的变量R值,否则程序不会编译。我已将代码附加到您身上,如果有人可以帮助我,我将非常高兴。谢谢。

int CHECK(int R);                        // Function Prototype
int main() {
    ...
    ...
    var = CHECK(15);               // Function called
    ...
    ...
int CHECK(int R);                 // Function definition
{
    int R;    
    for  (int z = 1; z <= R; z += 2) {
        if (array[z] <= 4)
        ...

编译文件时出现此错误:

credit.c:56:9: note: initialize the variable 'R' to silence this warning
int R;    
    ^
     = 0
1 error generated.
<builtin>: recipe for target 'credit' failed
make: *** [credit] Error 1

如果必须定义R变量,则其值将不会更改,并且我不能将R作为运算结果。我该怎么办?

2 个答案:

答案 0 :(得分:3)

您的问题称为“可变阴影”:

您的函数参数名为R,但是在您的函数中,您还有一个具有相同名称的局部变量。

局部变量“使”参数黯然失色,因此,每次在行R之后的代码中写入int R;时,实际上是在引用变量,而不是

只需删除本地变量,因为无论如何您都不会使用它,那么您的代码就可以了。

答案 1 :(得分:2)

我完全不太了解您要使用代码实现什么,但是我认为问题在于您两次声明了变量R。一次作为函数的参数,一次作为函数的主体。

int CHECK(int R);                 // this defines R
{
int R;                            // this also defines R
for  (int z = 1; z <= R; z += 2) {
if (array[z] <= 4)

因此,您应该尝试删除第二行:

int CHECK(int R);
{
for  (int z = 1; z <= R; z += 2) {
if (array[z] <= 4)