int main(void){
int arr[] = {1, 2, 3, 4, 5, 6};
printf("%p\t%p\t%d\n",arr,arr+1,(arr+1)-arr);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
输出:
0x7ffe583f4ba0 0x7ffe583f4ba4 1
Run Code Online (Sandbox Code Playgroud)
为什么差异1?不应该是4.
把这个表达(arr+1)-arr看作是
0x7ffe583f4ba0 + 1 - 0x7ffe583f4ba0
Run Code Online (Sandbox Code Playgroud)
它会给1.
当你减去指向同一个数组的两个指针时,它会给出这些指针之间的元素数量.
通过相同的逻辑,如果将指针递增到1的数组,int那么它将指向它的下一个元素(一个单元)而不是指向下一个sizeof(int)元素.
| 归档时间: |
|
| 查看次数: |
67 次 |
| 最近记录: |