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)
打印地址的原因是
(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++.
希望这可以帮助!
| 归档时间: |
|
| 查看次数: |
3723 次 |
| 最近记录: |