问题
对于数组 array
和&array
有什么区别呢?
先说答案
array
: 指向数组第一个数地址的指针
&array
: 指向整个数组地址的指针
所以直接打印的话, 地址是一样的.
但是如果+1
的话, 那么array
是增加sizeof(int)
大小, &array
是增加sizeof(int) * array.size()
测试
#include <iostream>
using namespace std;
int main() {
int array[5];
cout << "array = " << array << " : &array = " << &array << endl;
cout << "array + 1 = " << array + 1 << " : &array + 1 = " << &array + 1;
return 0;
}
执行结果
我们分析下, 直接打印他们的地址都是0000005EC98FFC40
但是如果+1的话:
array+1 = array的地址 + sizeof(int) = 0000005EC98FFC40
+ 4 = 0000005EC98FFC44
&array + 1 = &array的地址 + sizeof(int) * array.size() = 0000005EC98FFC40
+ 4 * 4 = 0000005EC98FFC54