您的位置:首页 > 其它

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

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

2.指针数组
//数组与指针关系
int a
[M];
int *p
;//p
是一个数组,什么数组呢,int *型;即一个长度为N的一维数组保存的是int*型的指针。(这样我们就可以把a
一个一个赋值给p
)
for(i=0;i<N;i++)
p[i]=a[i];
//malloc(这里的malloc需要知道N,you know that)
int *p
;
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]);
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: