c++ - *b= *b+1 和 *b++ 之间的区别

标签 c++ pointers increment

我正在尝试更改主函数中 a 和 b 的实际值。但是当我使用 *b++ 来增加 b 的值时。它不起作用。

#include<iostream>

using namespace std;


int F(int *b,int *c ){
    *b++;
    *c++;

}
int main(){
    int a=1 , b=2;
    cout<<a<<" "<< b<<" ";
    F(&a, &b);

    cout<<a<<" "<< b;
}

但在第二种情况下,代码运行良好。

#include<iostream>

using namespace std;


int F(int *b,int *c ){
    *b = *b+1;
    *c = *c+1;

}
int main(){
    int a=1 , b=2;
    cout<<a<<" "<< b<<" ";
    F(&a, &b);

    cout<<a<<" "<< b;
}

*b++ 和 *b=*b+1 不是一样吗?

最佳答案

它们不一样,第一个表达式只是操作你的指针,因为 operator precedence .

*b++;     // acts like *(b++)

这会递增指针,然后取消引用它。您需要额外的括号

(*b)++;

关于c++ - *b= *b+1 和 *b++ 之间的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60458952/

相关文章:

c - 为什么第二个 malloc 在这种情况下会失败?

C++ function_pointer 和 &function_pointer 有什么区别?

从一个字符指针复制到另一个字符指针

java - 给我的以下程序的输出只是没有点击。答案是 6 3 我显然不明白

php - 使用 php 增加数据库值

c++ - 如何在没有内存操作的情况下在 C++ 和 STL 中定义二维数组?

c++ - std::vector 引用被复制到 .insert()

c++ - 在应用程序启动之前需要特定的事件完成

c++ - 字符串、调试和段错误齐头并进

java - 将小写字母递减为仅小写字母