没有合适的资源?快使用搜索试试~ 我知道了~
C语言 指针数组
需积分: 10 2 下载量 140 浏览量
2014-03-20
23:01:18
上传
评论
收藏 3KB TXT 举报
温馨提示
试读
3页
偏移量始终指向大数组的下一个空闲的元素地址,
资源推荐
资源详情
资源评论
1. 地址算数运算示例
指针算数运算 : int *p, array[5]; p = array; p 指向一个 int 数组元素, p + i 的地址时数组中第 i 个元素的地址, 即 p + i 指向 第 i 个元素;
存储分配示例函数 :
-- char *alloc(int n) 函数 : 传入分配的字符个数, 返回连续字符存储单元指针, 这个指针可以存储 n 个字符元素;
-- int afree(char *p) 函数 : 释放分配的内存空间;
-- 缺陷 : 分配内存的时候, 有一个偏移量, 偏移量的大小代表已经分配了多少内存, 释放内存必须按照分配内存的顺序释放, 否则偏移量就会乱;
-- 内存分配原理 : 设置一个大数组, 内存分配就分配这个数组的中的空间, alloc 和 afree 函数操作的是指针, 不是数组, 因此这个数组可以隐藏, 将数组定义为static 类型, 那么在其它文件中, 不能访问该数组, 设置一个偏移量, 当分配 n 个元素, 偏移量就加上 n, 当偏移量 等于 数组大小, 说明内存全部分配完毕;
-- 偏移量设计 : 设置一个偏移量, 偏移量始终指向大数组的下一个空闲的元素地址, 当分配内存的时候, 通过计算 数组首地址 + 数组长度 - 偏移量 >= 分配大小 , 成立的话就可以分配内存, 分配内存就是将偏移量 加上 分配大小; 释放内存的时候, 就将偏移量 指向 释放内存的指针的首地址, 因此 要保持后进先出的次序;
代码 :
[cpp] view plaincopy在CODE上查看代码片派生到我的代码片
/*************************************************************************
> File Name: alloc_afree.c
> Author: octopus
> Mail: octopus_work.163.com
> Created Time: 2014年03月17日 星期一 19时34分08秒
************************************************************************/
#include<stdio.h>
//用于内存分配载体的大数组大小
#define ALLOCSIZE 1000
/*
* 该数组就是用于内存分配的主体,
* 设置为static , 意味着只能在本文件中访问, 在其它文件中不能访问
*/
static char alloc_buf[ALLOCSIZE];
指针算数运算 : int *p, array[5]; p = array; p 指向一个 int 数组元素, p + i 的地址时数组中第 i 个元素的地址, 即 p + i 指向 第 i 个元素;
存储分配示例函数 :
-- char *alloc(int n) 函数 : 传入分配的字符个数, 返回连续字符存储单元指针, 这个指针可以存储 n 个字符元素;
-- int afree(char *p) 函数 : 释放分配的内存空间;
-- 缺陷 : 分配内存的时候, 有一个偏移量, 偏移量的大小代表已经分配了多少内存, 释放内存必须按照分配内存的顺序释放, 否则偏移量就会乱;
-- 内存分配原理 : 设置一个大数组, 内存分配就分配这个数组的中的空间, alloc 和 afree 函数操作的是指针, 不是数组, 因此这个数组可以隐藏, 将数组定义为static 类型, 那么在其它文件中, 不能访问该数组, 设置一个偏移量, 当分配 n 个元素, 偏移量就加上 n, 当偏移量 等于 数组大小, 说明内存全部分配完毕;
-- 偏移量设计 : 设置一个偏移量, 偏移量始终指向大数组的下一个空闲的元素地址, 当分配内存的时候, 通过计算 数组首地址 + 数组长度 - 偏移量 >= 分配大小 , 成立的话就可以分配内存, 分配内存就是将偏移量 加上 分配大小; 释放内存的时候, 就将偏移量 指向 释放内存的指针的首地址, 因此 要保持后进先出的次序;
代码 :
[cpp] view plaincopy在CODE上查看代码片派生到我的代码片
/*************************************************************************
> File Name: alloc_afree.c
> Author: octopus
> Mail: octopus_work.163.com
> Created Time: 2014年03月17日 星期一 19时34分08秒
************************************************************************/
#include<stdio.h>
//用于内存分配载体的大数组大小
#define ALLOCSIZE 1000
/*
* 该数组就是用于内存分配的主体,
* 设置为static , 意味着只能在本文件中访问, 在其它文件中不能访问
*/
static char alloc_buf[ALLOCSIZE];
资源评论
冲天而降
- 粉丝: 0
- 资源: 1
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功