数据结构第0章简介解读.ppt

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
void Print_Stu_Doc(struct node *head); /* 遍历 */ { struct node *p=head; while( (p != NULL) { printf (%d%s%d\n, p-num, p-name, p-score); p=p-next; } } * * * * * 2. 参数引用 形式参数:值参数、引用参数() 值参:从实参得到相应的值,有独立的存储空间 (实参的数据 ? 形参) 引用参数:从实参得到相应的地址,与实参共用相同的存储空间 (实参的数据 ?? 形参的数据) 例:试编写函数计算a中大于0的个数和小于0的个数。 void f(int a[ ], int n, int m1, int m2) { m1 = m2 = 0; for (int i = 0; i n; i++) { if (a[i] 0) m1++; if (a[i] 0) m2++; } n=0; } void main() { int x[ ] = {-2,1,4,6,9,-7,-1,8,-5,3}, num=10, n1, n2; …… f(x, num, n1, n2); printf( “%d, %d, %d”, num, n1, n2); } 3. 布尔类型 bool 只有两个值0和1,可用符号常量false和true表示。 bool flag; ……… if (xy) flag=true; else flag=false; 例:用两种方法编写求数组a中的最大值与最小值的函数 void MAX_MIN(int *a, int n, int *max, int *min);与 void MAX_MIN(int *a, int n, int max, int min); 并分别编写主函数调用它们。 1. 指针与动态存储分配 例: int *a, *b, c=10, d=15; a=c; b=d; *a=5; printf(“%d, %d”, *a, *b); 指针变量一般应指示已定义的数据变量的存储单元的地址或动态分配的存储单元的地址。 指针进阶 动态存储分配 概念:存储空间不是由编译系统预先分配,而是由用户在程序运行过程中通过动态分配获取。使用动态内存分配能有效地使用内存 使用时申请 用完就释放 动态存储分配的步骤 (1)了解需要多少内存空间 (2)利用动态分配函数来分配所需要的存储空间。 (3)使指针指向获得的内存空间,以便用指针在该空间内实施运算或操作。 (4)使用完毕后,利用动态分配函数释放该空间。 int *p; …… p = (int *)malloc(sizeof(int)); *p=10; …… free(p); 动态存储分配函数malloc() void *malloc(unsigned size) 在内存的动态存储区中分配一连续空间,其长度为size 若申请成功,则返回一个指向所分配内存空间的起始地址的指针 若申请内存空间不成功,则返回NULL(值为0) if ((p = (int *)malloc(sizeof(int))) == NULL) { printf(“Not able to allocate memory. \n”); exit(1); } //动态分配一个整数类型大小的空间 调用malloc时,用 sizeof 计算存储块大小 动态存储释放函数free void free(void *ptr) 释放由动态存储分配函数申请到的整块内存空,ptr为指向要释放空间的首地址。 当某个动态分配的存储块不再用时,要及时将它释放 例如: free(p); 分配调整函数realloc void *realloc(void *ptr, unsigned size) 更改以前的存储分配 ptr必须是以前通过动态存储分配得到的指针 参数size为现在需要的空间大小 如果调整失败,返回NULL。 如果调整成功,返回一片能存放大小为size的区块,并复制原块内容到新块。且原存储块的内容不允许再通过ptr去使用它。 int *p, *q; p = (int *

文档评论(0)

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

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

1亿VIP精品文档

相关文档