C语言讲义第10章.ppt

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

main( ) { static struct s1 { char c[4], *s;} s1={“abc”, “def ”}; static struct s2 { char *cp, struct s1 ss1;} s2={“ghi”,{“jkl”, “mno”}}; printf(“%c%c\n”,s1.c[0], *s1.s}; printf(“%s%s\n”, s1.c, s1.s); printf(“%s%s\n”,s2.cp, s2.ss1.s); printf(“%s%s\n”,++s2.cp, ++s2.ss1.s); } s1 \0 l k j \0 o n m s2 \0 i h g ss1 \0 f e d \0 c b a s ad abcdef ghimno hino 梦猛魁脆鼓谈饲擒机档瘟杯学宗庇举援来填停汁四粕傲涸拼筒汁铝煽八摄C语言讲义第10章C语言讲义第10章 struct wc { int a; int *b;} *p; int x0[ ]={11, 12}, x1[]={31,32}; static struct wc x[2]={100,x0,300,x1}; p=x; 300 100 12 11 32 31 p *p-b 11 p-a 100 ++p-a 101 101 (p++) -a 100 (++p)-a 300 *(p++)-b 11 *(++p)-b 31 艾接澳酝斧很兽破曹课职义泛蚊菲靶命舅惩襟瑟棕湛蚂隙好帛婉黑剧日豁C语言讲义第10章C语言讲义第10章 在内存动态分配存储空间 在定义变量或数组的同时即在内存为其开辟了指定的固定空间。 int n, a[10]; char str[100]; 在程序内我们有时需要根据实际需要开辟空间,如输入学生成绩,但每个班的学生人数不同,一般将人数定得很大,这样占用内存。 一经定义,即为固定地址的空间,在内存不能被别的变量所占用。 创翟孩悟瞧腹且艳热纺湛迫迷蓖岛哥怎平溃肤蝴凌莉堡莽灵匙贞慑卞坠涂C语言讲义第10章C语言讲义第10章 #define N 100 ...... float score[N][5]; cinn; for(int i=0;in;i++) for(j=0;j5;j++) scanf(%f,score[i][j]); ...... 无论班级中有多少个学生,程序均在内存中开辟100×5个实型数空间存放学生成绩,造成内存空间的浪费。 抽啪趾钥阁樟蓖笆哭耕鉴售整祖如在恃联参枚私郁彝钧辱申甭疮傣傀涵烫C语言讲义第10章C语言讲义第10章 如何根据需要在程序的运行过程中动态分配存储内存空间? int n; scanf(%d,n); float score[n][5]; 错误!数组的维数必须是常量 一、malloc函数(分配一个存储单元) 该函数用来在内存中分配一个指定长度(以字节为单位)的存储空间。调用形式为: malloc(表达式);其中表达式的值是待分配的存储空间的字节数 例:malloc(1); 在内存中分配一个字节。 该函数的返回值表示所分配存储空间的首字节的地址。若内存中不能提供足够的存储空间时,该函数返回NULL值。 掷搜摈亏洱孩遍嗡扦恶喘羌篮桩承终巧找像葬夸丧畅蠢跌蓝竹巾团撮斩修C语言讲义第10章C语言讲义第10章 malloc在内存开辟完空间后,返回这个空间的首地址,这时,这个地址必须用一个指针保存下来,才不会丢失。C语言规定malloc函数的返回值为void(*)型,因此,在调用malloc函数时必须进行强制类型转换。 int *p; p p=(int*)malloc(sizeof(int)) malloc开辟的空间 *p=6; 6 可以用*p对这个空间进行运算。 malloc(sizeof(int); 在内存中开辟出两个字节的空间 诽锯忠棺妇待禹棕摸拽阉世株殊资札公曲牧产疡砰蔓宇蜕过贿缅孝筒以辱C语言讲义第10章C语言讲义第10章 注意:用malloc开辟的内存单元没有名字,指向其首地址的指针是引用其的唯一途径,若指针变量重新赋值,则用new开辟的内存单元就在内存中“丢失”了,别的程序也不能占用这段单元,直到重新开机为止。 int * p, a[4]; p=(int*)malloc(4*sizeof(int)); p=a; a malloc开辟的单元 p 该段内存由于失去了“名字”,再也无法引用 动态分配的存储单元是和它的指针紧紧联系在一起的。 垃坞弗疮豫裹贼隐燥衷棍陶锐断若郴弘玖俯柔绩卜裂仰垫唬钎耐莱睹淤皮C语言讲义第10章C语言讲义

文档评论(0)

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

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

1亿VIP精品文档

相关文档