C编程:使用未声明的标识符[已关闭]

ca1c2owp  于 2023-01-12  发布在  其他
关注(0)|答案(2)|浏览(205)

这个问题是由打字错误或无法再重现的问题引起的。虽然类似的问题在这里可能是on-topic,但这个问题的解决方式不太可能帮助未来的读者。
昨天关门了。
Improve this question
我正在尝试运行一个交换算法并返回c中的值。请帮助!

void swap(int a,int b)
{
    temp = a;
    a=b;
    b=temp;
}

void display()
{
    return a, b
}

void main()
{
    x=10
    y=12
    swap(a,b)
    display()
}
error: use of undeclared
      identifier 'x'       
error: 'main' must return
      'int'

我在函数名中添加了void,在交换参数中添加了int,我不知道还能做什么。

hzbexzde

hzbexzde1#

这个程序有很多错误,在c语言编程中,在使用变量之前,我们必须明确声明它所能存储的数据类型,所以你必须定义xy的类型为整型(int x = 10int y=12)。接下来,您在swap()中传递未定义的标识符ab。它必须是swap(x,y)。最后一点是当你从一个函数返回一个值时,你必须定义函数的返回类型为你要返回的特定类型,在这种情况下,函数的返回类型必须是int display()

eanckbw9

eanckbw92#

1.)在C语言中,语句以分号(;)结尾。您在大多数行中缺少分号。
2.)C是“pass-by-copy”,当你传递a和b给swap函数时,变量被复制,并且改变在调用函数中是不可见的。你***必须***pass-by-reference(又称指针),这样函数内部的局部改变才会对调用者可见。
我已经尝试修复你的代码与广泛的评论如下。
但坦白说,你的代码是一个混乱。
阅读一个基本的C教程。这些问题在基本教程中无处不在。

// Changed to pointer notation for pass-by-reference
void swap(int*const a,int*const b)
{
    // ERROR: temp = a; temp is not defined
    int temp = *a;
    // Declared temp as int. Assigned it to the value of pointer a.

    *a=*b;
    // Used pointer/de-reference notation, so that changes are visible to the caller.
    *b=temp;
}

void display(int a, int b)
{
    // return a, b
    // This line makes no sense.

    printf("Values %d and %d\n", a, b);
    // Use printf to display data.
}

int main(void) // Main always returns int in C
{
    // BAD x=10. Corrected:
    int x = 10;

    // BAD y=12. Corrected:
    int y = 12;

    swap(&x,&y);
    // Added a semi-colon.
    // a and b are not defined. Changed to x, y

    display(x, y);
    // Added a semi-colon.
    // Passed parameters x and y to be displayed.
}

代码已修复并在线运行:
https://ideone.com/d581y3

相关问题