c - 如何在一行中增加或减少 C 函数调用中的指针参数值?

标签 c pointers

我有以下代码:

#include <stdio.h>

int foo2(int *px, int *py)
{
    int sum = *px + *py;
    *px = *px + 1;
    *py = *py - 1;
    printf("foo2 : res=%d x=%d y=%d\n", sum, *px, *py);
    return sum;
}

int main() {
    int x = 4, y = 7, res;
    res = foo2(&(x++), &(y--));
    printf("%d", res);

    return 0;
}

我需要增加 x,减少 y,然后我需要将它们作为参数传递给 foo 函数。

我有错误:左值需要作为一元“&”操作数。我还尝试使用 x + 1y - 1 而不是 x++y++

如何在 foo2 函数调用中递增 xy 值并将指针传递给它们?可能吗?

最佳答案

您可以使用逗号运算符:

res = foo2((x++, &x), (y--, &y));

但是这不是很可读,所以除非你有很好的理由,否则最好将它写成三个单独的语句:

x++;
y--;
res = foo2(&x, &y);

关于c - 如何在一行中增加或减少 C 函数调用中的指针参数值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62970173/

相关文章:

c++ - 将 uint8_t* 转换为 char* 以用于 QIODevice

c++ - 指针、自定义类、Seg Fault 11s

c - 分配从函数返回的指针

c++ - 从派生**转换为基础**

c - 从另一个线程操作 GUI 控件有什么问题吗?

c - 内存管理和内存分配之间的区别。当分配/访问发生时它们都一起工作2内存|它们是如何精确相关的

c - 使用fgets读取文件

c - opencv保存文件xml

c - 理解读取一组文本行并打印K&R书中最长的程序

c - 如何避免涉及 ptr 到 ptr 到 ptr 的不必要的转换和无关变量