我只是对以下代码得到的输出感到困惑:
int arr[] = {10,20,30};
cout<<&arr[1]<<"\t"<<&arr[0]<<"\t"<<&arr[1] - &arr[0];
Run Code Online (Sandbox Code Playgroud)
我得到的输出就像
0046F7A0 0046F79C 1
Run Code Online (Sandbox Code Playgroud)
我想知道为什么地址之间的差异为 1(我期望为 4)...?这与指针减法有关吗?
是的,这就是指针运算的结果。arr + 1这与为什么会指向 的原因相同arr[1]。仅当两个指针都指向同一数组中的元素时,指针算术才是明确定义的。如果两个这样的指针P和Q指向数组位置i和j,则P-Q = i-j。
另外,如果您查看打印的实际地址的差异,它们符合您的期望 - 差异为4。
| 归档时间: |
|
| 查看次数: |
780 次 |
| 最近记录: |