数据结构(一) (3)

代码示例如下:

void test2(void) { int len; printf("请输入你要动态创建的数组长度:"); scanf("%d",&len); int *pArr = (int *)malloc(len); // 动态创建数组 *pArr = 4; // 相当于 a[0] = 4; 这里 pArr 就等于数组首地址,等于数组名 pArr[2] = 5; // 相当于 a[2] = 5; printf("pArr[0] = %d \npArr[2] = %d\n",pArr[0],pArr[2]); free(pArr); // 使用完毕,释放对应的数组空间 } 跨函数使用内存

在函数内部分配的局部变量,在函数调用完成之后就会被系统回收,其内存也会消失。但是程序中常常需要定义一块内存,当我们用完之后再会回收。如 OC 语言中对象。所以需要保存住分配的内存,应该用动态分配内存,当用完之后再手动释放。这也是C语言的一个不足之处:内存需要我们手动创建和手动释放,这也是 OC 语言在开发 iOS 程序时候,我们所讲的MRC。【苹果也发现了这个不足,于 iOS 5 的时候推出了ARC 】

下面是一个跨函数使用内存的例子:

// 这个例子已经非常有面向对象的味道了 typedef struct Student{ // 自定义 student 结构体 int age; char * name; }myStudent; myStudent * createStudent(void); // 创建 student void showStudent(myStudent *); // 输出 student int main(void) { myStudent *p = createStudent(); // 创建 student showStudent(p); // 输出 student return 0; } myStudent * createStudent(void) { myStudent *p = (myStudent *)malloc(sizeof(myStudent)); p->age = 20; p->name = "xiaoyou"; return p; } void showStudent(myStudent *p) { printf("student.age = %d \nstudent.name = %s\n",p->age,p->name); } 4. 小结

本文主要讲解了数据结构的定义和简介。
回顾了学习数据结构应该具备的一些 C语言 的基础知识,如指针、结构体、和内存等。

后面会继续开始对数据结构的讲解。

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zywgxd.html