二级指针三种内存模型总述

三种内存模型:
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)移动的步长则是一行

猜你喜欢

转载自www.cnblogs.com/fengxing999/p/10320603.html
今日推荐