day15 - 动态构造内存
2012-06-10 00:13
183 查看
指针和数组的复习
总结:
指针 变量的运算:
指针变量不能相加,不能相乘,也不能相除
如果这两个指针所指向的是同一个连续空间中的不同存储单元
则这两个元素就能想减
一个指针变量到底占几个字节?
解答:
一个指针变量,无论它所指向的变量有多少个字节.都是4个字节
该变量本身都只占4个字节
一个变量的地址是用该变量的首字节来做地址的。
预备知识:
sizeof (数据类型)
功能:返回值就是该数据类型所占的字节数
sizeof(变量名)
功能:返回值是该变量所占的字节数
专题:
动态内存的分配
传统数组的是缺点的:
1.数组长度必须事先制定,而且只是一个常数,不能是变量。
为什么需要动态的内存分配
动态数组很好的解决了传递数组的缺陷
传统数组也是叫做静态数组
本文出自 “Growthcourse” 博客,请务必保留此出处http://wangweihao.blog.51cto.com/4857217/893917
总结:
指针 变量的运算:
指针变量不能相加,不能相乘,也不能相除
如果这两个指针所指向的是同一个连续空间中的不同存储单元
则这两个元素就能想减
一个指针变量到底占几个字节?
解答:
一个指针变量,无论它所指向的变量有多少个字节.都是4个字节
该变量本身都只占4个字节
一个变量的地址是用该变量的首字节来做地址的。
预备知识:
sizeof (数据类型)
功能:返回值就是该数据类型所占的字节数
sizeof(变量名)
功能:返回值是该变量所占的字节数
专题:
动态内存的分配
传统数组的是缺点的:
1.数组长度必须事先制定,而且只是一个常数,不能是变量。
#include <stdio.h> void show(int *q) { int b[6] = {1,2,3,4,5,6}; *q = 88; } void show1(int *q) { /* show函数定义的数组,在show函数执行完毕过后,那么里面的数组b我也不能使用。 传统定义方式的数组不能跨函数使用。 */ } int main(void) { /* 1.数组长度是先规定的,而且只能是整型的常量,不能是变量。 int b = 9; int a[5] = {1,2,3,4,5}; //4 个字节 5个数字 4×5 = 20个字节。 */ /* 2.传统形式定义的数组,该数组的内存程序员是没有办法手动去释放它。 在一个函数运行期间,系统为该函数数组所分配的内存空间是没有办法手动释放的 除非该函数执行的程序自动结束,系统才会把这个函数释放掉。 int a[5] = {1,2,3,4,5}; //4 个字节 5个数字 4×5 = 20个字节。 show(a); */ /* 数组的长度一旦定义,其长度就不能更改\ 因为数组是一个常量.所以不能被更改。 int a[5] = {1,2,3,4,5}; a[6] = {1,2,3,4,5,6}; */ int a[5] = {1,2,3,4,5}; show(a); return 0; } /* main函数结束完毕过后才自动释放掉。 */
为什么需要动态的内存分配
动态数组很好的解决了传递数组的缺陷
传统数组也是叫做静态数组
#include <stdio.h> #include <malloc.h> int main(void) { int i =5; //分配4个字节 int *p = (int *)malloc(4); /* 1.要使用malloc函数,必须添加malloc.h文件头 2.malloc函数只有一个形参,并且形参是整型 3.4表示请求系统为本程序分配4个字节 4.malloc函数只能返回第一个字节的地址 5.第六行是分配了8个字节。 *p是一个字节,p所指向的内存也占了4个字节。 6.p本身所占的内存是静态分配的,而p所指向的内存地址是动态分配的。 */ *p = 8; //*p代表的是一个int变量,只不过×p这个整型变量分配内存存储方式不同 free(p); //表示把p所指向的内存给释放掉,但是p本身是一个内存是静态的,不能由程序员手动释放,p本身内存只能让那个 //p变量所在的函数运行终止时由系统自动释放掉。 printf("%d",*p); return 0; }
本文出自 “Growthcourse” 博客,请务必保留此出处http://wangweihao.blog.51cto.com/4857217/893917
相关文章推荐
- day 15:Collection中的Set和Map
- python学习笔记-Day15 -jquery常用知识
- 纪中训练 day15 树状数组
- PythonDay15
- Day 15 list(frequency 4)
- Java之品优购课程讲义_day15(5)
- Android面试一天一题(15 Day:ContentProvider)
- 【备战秋招Day 5】经典面试题17-20及在线编程题13-15答案
- day15/GenericDemo1.java
- Summer day 15
- Day 15:我要逆袭。
- javaday15-IO作业
- day-15 磁盘挂载 磁盘格式化
- 暴力 hihoCoder 1251 Today Is a Rainy Day (15北京C)
- JAVA WEB从入门到精通 day15 MYSQL简单学习
- Day15 递归进阶和二分查找以及冒泡排序
- java基础视频25days(毕老师)学习日志(day14、day15、day16)
- java - day15 - NonameInner
- java - day15 - nstInner
- day15/GenericDemo2.java