KJP*_*KJP 2 c++ variables pointers
当你声明时,我想知道内存中发生了什么:
int **array;
Run Code Online (Sandbox Code Playgroud)
如果我没有记错的话...
你有一个多维数组arr[i][j]和
**arr 地址到 arr[0][0]
*((*arr)+1) 地址到 arr[0][1]
*(*(arr+1)+1) 地址到 arr[1][1]
C++ 中的示例代码
#include <iostream>
using namespace std;
int main()
{
int **arr;
arr = new int*[5];
for(int i = 0; i < 5; i++)
arr[i] = new int[5];
arr[0][1] = 1;
cout << *((*arr)+1); // prints 1
cout << arr[0][1] = 1; // prints 1
}
Run Code Online (Sandbox Code Playgroud)
编译器保留四个字节(在32位系统上,在64位上为8个字节)来存储指针(指向另一个指向int的指针).没有进一步的内存分配,程序员可以将指针实际设置为指向存储int*/ array/...的其他内存位置.