为什么 j 的值是 11

Why the value of j is 11?

本文关键字:为什么      更新时间:2023-10-16

我的代码使用C++

#include <iostream>
using namespace std;
int main() {
    int i = 10, j = 20, k;
    int* p = &i;
    int* q = &j;
    *p += 1;    
    p = &k;    
    *p = *q;    
    p = q;    
    *p = i;
    cout << j << endl;
    return 0;
}

请为我解释为什么j = 11?我倾向于它是一个不同的值,但它是 11。

希望你能理解这一点,你需要知道,当指针指向一个内存时,我们称之为*指针=valueX =>内存将被设置为valueX。

#include <iostream>
using namespace std;
int main() {
    int i = 10, j = 20, k;
    int* p = &i; // p point to i =>*p=10
    int* q = &j; // q point to j =>*q=20
    *p += 1; // *p = *p + 1 => *p=11 => i = 11   
    p = &k; // p point to k   
    *p = *q; // *p = 20 => k = 20   
    p = q; // p point to j (q point to j)   
    *p = i; // set value of memory which p point to to value of i => *p = 11 => j = 11
    cout << j << endl;
    return 0;
}