二级指针三种内存模型总述
三种内存模型:
1指针数组 本质为二级指针
2二维数组 本质位数组指针
3手工打造二维内存
void main51()
{
int i = 0;
//01指针数组
char* p1[] = {"123","456","789"};
//02二维数组
char p2[3][4] = { "123", "456", "789" };
//03手工二维内存
char **p3 = (char**)malloc(sizeof(char*) * 3);
for (i = 0; i < 3; i++)
{
p3[i] = (char*)malloc(sizeof(char) * 10);
}
printf("\nhehhe");
system("pause");
return;
}
01和03的内存模型是很像的 前者数组内存放在栈中 每个数组元素是指向堆空间的指针
后者数组内存放在堆中 每个数组元素也是指向堆空间的指针
所以 *(p1+1)和 *(p3+1)的步长是一样的 都是向后移一个元素
而 *(p2+1)移动的步长则是一行