数组<->指针<->动态数组之间的关系

来源:互联网 发布:淘宝hd微淘 编辑:程序博客网 时间:2024/06/05 14:31
//数组与指针关系int a;int *p;p=&a;//mallocint *p=(int *)malloc(sizeof(int ));//freefree(p);
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 一维数组
//数组与指针关系 int a[N]; int *p; p=a; //malloc int *p=(int *)malloc(sizeof(int )*N); //free free(p);
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 二维数组

1.数组指针

//数组与指针关系int a[N][M];int (*p)[M]=a; //(*p)是一个指针,类型是int(*)[M];即指向int型的长度为M的一维数组,(因为之前a声明的数组大小是N*M,所以可以通过p++或p[N]来访问不同行,这里也可以看出一点二维数组a在定义的时候的类型是int (*)[]型,这也许就是不能把一个二维数组赋给一个二级指针的原因)//malloc(这里面用malloc 必须是要知道M(你知道我说的M特指什么));int (*p)[M]=(int (*)[M])malloc(sizeof(int)*N*M);//freefree(p);
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

2.指针数组

//数组与指针关系int a[N][M];int *p[N];//p[N]是一个数组,什么数组呢,int *型;即一个长度为N的一维数组保存的是int*型的指针。(这样我们就可以把a[N]一个一个赋值给p[N])for(i=0;i<N;i++)    p[i]=a[i];//malloc(这里的malloc需要知道N,you know that)int *p[N];for(i=0;i<n;i+)    p[i]=(int *)malloc(sizeof(int )*M);//free(这里p是一个数组不用free,需要free掉的是数组保存的指针指向的的空间)for(i=0;i;<<n;i++)    free(p[i]);
原创粉丝点击