C++:用于循环打印地址的数组而不是值

use*_*538 0 c++ arrays for-loop memory-address

这是我们在课堂上给出的一个例子.有人可以向我解释为什么打印29个地址而不是29"0"(零)?

int num[29]; 是一个为29个整数留出29个地址的数组 - 我得到那个部分,但是在for循环中你不打印那些地址而不是地址本身的值吗?

还有,(num+i)和之间的区别是(num[]+i)什么?

我有点困惑..

#include <iostream>
#include <cmath>

using namespace std;

int main(){
    int  num[29];
    for (int i=0;i<29;i++)
        cout << (num+i) << endl;

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

tem*_*def 8

打印地址的原因是

(num+i)
Run Code Online (Sandbox Code Playgroud)

i数组的第th个元素的地址,而不是第ith个元素本身的地址.如果你想获得第ith个元素,你可以写

*(num + i)
Run Code Online (Sandbox Code Playgroud)

或者,甚至更好:

num[i]
Run Code Online (Sandbox Code Playgroud)

至于你的第二个问题 - 语法(num + i)意味着"地址i对象超过了开头num,而且语法(num[] + i)不是合法的C或C++.

希望这可以帮助!