Lect_fchap08_指针.ppt

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
Lect_fchap08_指针

int main( ) { int i; int x, min; scanf(%d, x); min = x; for(i = 1; i 5; i++){ scanf(%d, x); if(x min) min = x; } printf(min is %d\n, min); return 0; } 例8-11 求最小字符串 #include string.h int main( ) { int i; char sx[80], smin[80]; scanf(%s, sx); strcpy(smin,sx); for(i = 1; i 5; i++){ scanf(%s, sx); if(strcmp(sx, smin)0) strcpy(smin,sx); } printf(min is %s\n, smin); return 0; } 2 8 -1 99 0 min is –1 tool key about zoo sea min is about 8.5 任意个整数求和 * 例8-12 先输入一个正整数n,再输入任意n个整数,计算并输出这n个整数的和。 要求使用动态内存分配方法为这n个整数分配空间。 8.5.1 程序解析 int main ( ) { int n, sum, i, *p; ? printf(Enter n: ); scanf(%d, n); if ((p = (int *) calloc (n, sizeof(int))) == NULL) { printf(Not able to allocate memory. \n); exit(1); } printf(Enter %d integers: , n); for (i = 0; i n; i++) scanf(%d, p+i); sum = 0; for (i = 0; i n; i++) sum = sum + *(p+i); printf(The sum is %d \n,sum); free(p); ? return 0; } Enter n: 10 Enter 10 integers: 3 7 12 54 2 –19 8 –1 0 15 The sum is 81 8.5.2 用指针实现内存动态分配 全局变量、静态局部变量的存储: 编译时确定,在程序开始执行前完成。 自动变量的存储: 执行时分配存储,变量的大小是静态确定的。 但有时,需要在运行中动态分配存储空间。 使用动态内存分配能有效地使用内存 使用时申请 用完就释放 动态内存分配的步骤 (1)了解需要多少内存空间 (2)利用动态分配函数获取存储空间。 (3)使指针指向获得的内存空间 以便用指针对该空间实施运算或操作。 (4)使用完毕,释放空间。 动态存储分配函数malloc() void *malloc(unsigned size) 在动态存储区中分配长度为size的连续空间 申请成功,返回所分配内存空间的起始地址 申请不成功,则返回NULL(值为0) 返回值类型:(void *) 通用指针的一个重要用途 将malloc的返回值转换到特定指针类型,赋给一个指针 if ((p = (int *)malloc(n*sizeof(int))) == NULL) { printf(Not able to allocate memory. \n); exit(1); } 不要越界使用 计数动态存储分配函数calloc () void *calloc( unsigned n, unsigned size) n个长度为size的连续空间,并全部初始化为0 申请成功:返回起始地址 申请不成功:则返回NULL malloc对所分配的存储块不做任何事情 calloc对整个区域进行初始化 动态存储释放函数free void free(void *ptr) 释放由ptr指向的存储空间。 当某个动态分配的存储块不再用时,要及时将它释放 分配调整函数realloc void *realloc(void *ptr, unsigned size) 更改以前的存储分配 ptr必须是

文档评论(0)

shuwkb + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档