c - 使用两个不同的函数来更改 main 和 print 中的变量

标签 c

所以我必须创建两个函数。在 int main 中,程序要求输入 x 和 y 值。在第一个函数中,它将 x 和 y 值加 1。在下一个函数中,它打印出该函数的结果。现在我的问题是第二个函数没有打印出第一个函数的输出,我不知道我做错了什么,这是我目前的代码:

#include <stdio.h>

void plusone(int *x,int *y);
void printresult(int *x, int *y);

int main()
{
    int x,y;
    printf("enter x variable: ");
    scanf("%d",&x);
    printf("enter y variable: ");
    scanf("%d",&y);
    plusone(&x,&y);

    printf ("%d and %d\n\n",x,y);
    printresult(&x,&y);
}

void plusone(int *x,int *y)
{
    return *x+1;
}

void printresult(int *x,int *y)
{
    printf("the result is: x:%d y:%d",*x,*y);
}

所以当我运行那个程序时,x输入1,y输入2,输出仍然是1和2,但是plusone函数之后应该是x是2,y是2,请问有什么问题吗我的代码?对不起我的英语,但我希望我解释得很好,我是 C 编程的新手

最佳答案

更好的答案是 plusone 函数不会对 *x 参数应用任何副作用。这是一个有副作用的 plusone 函数(实际上是两个——每个传入的变量都有一个):

void plusone(int *x,int *y)
{
    *x = *x+1;
    *y = *y+1;
}

关于c - 使用两个不同的函数来更改 main 和 print 中的变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27469530/

相关文章:

c - 如何获取物理 CPU 数 :s in Linux using C?

c - 为什么我的 scanf 在函数中不起作用?

c - 如何在 C(Linux utf8 终端)中打印 "box drawers"Unicode 字符?

c - 如何在Linux中使用串口读取字符

c++ - 如何计算 cilk_spawn 的时间

cppcheck 空指针取消引用,但它实际上可以变成 null

c++ - 如何将 gmail 中的 mpz_t 存储在 mongodb 上?

c - 在输入中只获取整数

c - 多次调用 fprintf;我应该什么时候使用 fflush?

c - 如何编写一个函数来检查两个数组是否水平对称?