数组<->指针<->动态数组之间的关系
来源:互联网 发布:mac共享设置 编辑:程序博客网 时间:2024/06/04 19:09
敲代码时候需要动态声明一个二维数组,然后开始然,然不清,然后发现指针也然不清了...然后总结一些笔记关于数组,指针,malloc,free。
- 变量
//数组与指针关系int a;int *p;p=&a;//mallocint *p=(int *)malloc(sizeof(int ));//freefree(p);
- 一维数组
//数组与指针关系 int a[N]; int *p; p=a; //malloc int *p=(int *)malloc(sizeof(int )*N); //free free(p);
- 二维数组
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);
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]);
3.二级指针
//数组与指针关系int a[N][M];int **p;p=a;//哈哈,你会发现他会说类型不符,至于为什么上面说了p=&a;//哈哈,你会发现他还是会说类型不符,至于为什么和刚刚一样//malloc(这里malloc和指针数组类似,相当于是找了一个二级指针去指向那个指针数组)int **p;p=(int **)malloc(sizeof(int *)*N);for(i=0;i<n;i++) p[i]=(int *)malloc(sizeof(int )*M);//free(这里要先将一级指针释放,然后讲二级指针释放)for(i=0;i<n;i++) free(p[i]);free(p);
over
阅读全文
1 0
- 数组<->指针<->动态数组之间的关系
- 数组<->指针<->动态数组之间的关系
- 数组与指针之间的微妙关系
- 数组 与 指针 之间的关系 分析
- 二维数组和指针之间的关系
- 数组,指针与函数之间的关系
- 指针与数组,指针与函数之间的关系
- 指针与函数及指针与数组之间的关系
- c/c++中指针与字符数组,指针与数组,数组指针与指针数组之间的关系。
- 解析二级指针与二维数组之间的关系
- 解析二级指针与二维数组之间的关系
- c语言,指针和数组大小之间的关系
- 指针与数组之间的关系与转换
- 函数 数组 指针 三者之间的关系
- 二维数组和指针之间的关系详解
- 第五篇:指针和数组之间的关系
- 指针数组和数组指针的关系
- 指针数组,数组指针,二级指针,二维数组的关系
- 判断一个点是否在三角形内
- 十一、Spring Cloud包管理
- 分页组件简版
- java基本类型和基本类型包装型比较时的自动拆箱和自动装箱
- android 云标签,文字墙(文字随机排列效果)
- 数组<->指针<->动态数组之间的关系
- redis.clients.jedis.exceptions.JedisClusterException & [ERR] Node 192.168.10.32:7001 is not emp
- Java中System.setProperty()用法
- TCP/IP,HTTP,SOAP等协议之区别
- mongo查询谨记知识点
- freemarker-模板
- 测试道路之第三周
- 每日一题之求二叉树的高度并销毁一棵二叉树
- Portal认证