Cの関数呼び出しでポインター引数の値を1行でインクリメントまたはデクリメントするにはどうすればよいですか?

diduk001:

私は次のコードを持っています:

#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;
}

increment x、decrement yする必要があり、次にそれらをfoo関数として引数として渡す必要があります。

持っていerror: lvalue required as unary ‘&’ operandます。また、私は使用しようとしたx + 1y - 1の代わりに、x++y++

関数呼び出しでxyを増分しそれらにポインターを渡すにはどうすればよいfoo2ですか?出来ますか?

ネイト・エルドレッジ:

コンマ演算子を使用できます。

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

ただし、これはあまり読みやすいものではないため、本当に正当な理由がない限り、次の3つのステートメントとして記述する方が適切です。

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

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

Related 関連記事

ホットタグ

アーカイブ