C语言-预处理和动态存储.pptVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
动态内存分配函数 3.free函数 函数原型:void free(void *p); 功能:释放指针p指向的存储空间,free函数无返回值。 说明:p为最近一次调用malloc函数或calloc函数返回的指针。 4.realloc函数 函数原型:void *realloc(void *p,unsigned int size); 功能:将指针p所指向的存储空间,重新分配改变为size个字节,并将原存储空间存放的数据拷贝到新分配的存储空间。如果分配成功,函数返回一个指向新存储空间起始地址的指针,否则返回空指针。 动态内存分配函数 注意: (1)最好在同一个函数内动态分配和释放存储空间。 (2)最好在定义指针时将指针初始化为NULL,在释放指针后也将指针赋值为NULL,这样便于在需判断指针有效性时,用p==NULL判断指针是否为空指针。 (3)ANSI C标准要求动态分配存储空间需将“stdlib.h”文件用#include命令包含在程序中。 例:一维动态数组 #include stdlib.h main() { int *p = NULL, n, i, sum; printf(Please enter array size:); scanf(%d, n); p = (int *) malloc(n * sizeof (int)); if (p == NULL) { printf(No enough memory!\n); exit(0); } printf(Please enter the score:); for (i=0; in; i++) { scanf(%d, p + i); } sum = 0; for (i=0; in; i++) { sum = sum + *(p + i); } printf(aver = %d\n, sum/n); free(p); } 例:二维动态数组 #include stdlib.h main() { int *pScore = NULL, i, j, m, n, maxScore, row, col; printf(Please enter array size m,n:); scanf(%d,%d, m, n); pScore = (int *) calloc(m*n, sizeof (int)); if (p == NULL) { printf(No enough memory!\n); exit(0); } printf(Please enter the score:); for (i=0; im; i++) { for (j = 0; jn; j++) { scanf(%d, pScore [i*n+j]); } } maxScore = FindMax(pScore, 3, 4, row, col); printf(maxScore = %d, class = %d, number = %d\n, maxScore, row+1, col+1); free(pScore ); } 历年真题 真题:已有定义:double*p;,请写出完整的语句,利用malloc函数使p指向一个双精度型的动态存储单元__。【2005.9】 答案:p=(double*)malloc(sizeof(double)) * 专题之九 编译预处理和动态存储管理 考纲分析 编译预处理 1、 宏定义:不带参数的宏定义;带参数的宏定义。 2、 文件包含处理。 分析:这部分主要讨论了预编译,一般会出1-2个选择题和1-2个填空题。 这部分好掌握,明确两条:1、宏定义#define后面的就直接带入,再计算。2、头文件中的ifndef/define/endif的作用是防止该头文件被重复引用。 C提供的预处理功能主要有以下三种:   1. 宏定义    2. 文件包含    3. 条件编译 分别用宏定义命令、文件包含命令、条件编译命令来实现。为了与一般C语句相区别,这些命令以符号“#”开头。 历年真题必学 真题1:下列程序的功能是:给r输入数据后计算半径为r的圆面积s。程序在编译时出错。【2005.9】 main() { int r; float s; scanf

文档评论(0)

***** + 关注
实名认证
文档贡献者

本账号下所有文档分享可拿50%收益 欢迎分享

1亿VIP精品文档

相关文档