C语言读书笔记_第1页
C语言读书笔记_第2页
C语言读书笔记_第3页
C语言读书笔记_第4页
C语言读书笔记_第5页
已阅读5页,还剩12页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

经典word整理文档,仅参考,双击此处可删除页眉页脚。本资料属于网络整理,如有侵权,请联系删除,谢谢!+C.C%d).PT;t.C(ICC9d.CC,J.0`O@.0如。intint4%_l.、478.a2Va和c和5A.5h3XB.7zc+-*/%)#R><)[B!)~|^&4v=)?:;L,)*&))#Gg."p[])()1QR和iiii+i1iuc7a~5b9bz#BX)w3^F|cc:Y)K①d-Zl&L②o③x④u7B⑤c⑥sm8Jam#CJmn7Ynmn值⑦f8Z6位mn"K⑧e5)⑨gfe2SE8V),n)C&r.c><:b.L^C))128Z2-Tn.&C:s.&a:Q;7g…;7Z;}&t*dmx.)?!VH)|K."w6M.3Bc4P.5p.1[e)(Dx)1/l>)3r))6?;wS.①②1L③:bz④1B⑤4a.-IH.'c%L3O身.:k.2~3N9D1N*].C0aq2IrCc3`U就7Z8J(q1P0YS$n|)W9t(n$z.3DBcc!B.6{!j4w:pcc#L:nM;g5T念0_.R4?f.&m"1:M""<>""<".&e$nE$l's#H`]T`+w)i*E"\0~指针6h^.&w/f,是4?&a*a6@.7cc,如果用指针可以这样引用,,或定义一个指针变量,将数组a的首地址赋给然后用引用。a的地址。:Z数组名作函数参数形参的值发生变化,则实参的值也跟着变化。2c指向多维数组的指针和指针变量以二维数组为居多。假设定义了一个二维数组,那么a代表整个二维数组的首地址,也代表第0行的首地址,同时也是第0行第0列的元素的首地址。a和代表第0行首地址,和代表第一行的首地址。4d假设a是一个数组的首地址,那么如果a是一维的,代表第I个元素的地址,如果a是二维的,则代表第I行的首地址。那么第一行第二列的元素地址如何表示呢。我们只要记住:在二维数组中a代表整个数组的首地址,代表第I行的首地址,与等价就行了。只要运用熟练了就没什么复杂的了。(h指向由m个整数组成的一维数组的指针变量如:p是一个指向包含4个元素的一维数组,如果p先指向,则指向,即p的增值是以一维数组的长度为单位的,这里是,举个例子:$n假设p先指向也就是数组a就是的首地址即元素9的地址,因为在定义p时,定义一维数组长度为,所以就等于加了一个一维数组的长度。.字符串的指针和指向字符串的指针变量1g字符串的表示形式(Ic中字符串有两种表示形式:一种是数组,一种是字符指针其实指针形式也是在内存中开辟了一个数组,只不过数组的首地址存放在字符指针变量中,千万不要认为是一个字符串变量。字符串指针作函数参数(r实际上字符串指针就是数组的首地址。字符指针变量与字符数组的区别①字符数组由若干元素组成,每个元素存放一个字符,而字符指针变量只存放字符串的首地址,不是整个字符串$G②对数组初始化要用,对指针变量不用。+u③对字符数组赋值,只能对各个元素赋值,不能象下面这样X6Q对指针变量可以,%i9H)~g注意:此时赋给的不是字符,而是字符串首地址。④数组在定义和编译时分配内存单元,而指针变量定义后最好将其初始化,否则指针变量的值会指向一个不确定的内存段,将会破坏程序。如:a这种方法是很危险的,应该这样:+Ua=9oa这样字符指针就指向了一个确定的内存段D⑤:U.函数的指针和指向函数的指针变量一个函数在编译时被分配一个入口地址,这个入口地址就称为函数的指针。函数名代表函过该指针变量调用函数。如:假设有一个求两者较大的函数如下inty当我们调用这个函数时可以这样:b这是通常调用方法,其实我们可以定义一个函数指针,通过指针来调用,如:注意指向函数指针变量的定义形式此句就是将函数的入口地址赋给函数指针变量pb.X有些朋友可能对不大理解,其实它的意思就是定义一个指向函数的指针变p不入口地址赋给它,它就指向哪个函数。但要注意,p不能象指向变量的指针变量一样进行等无意义的操作。既然p的用途之一就是作为函数参数传递到其它函数。这也1p.返回指针值的函数$B我们知道,一个函数可以带回一个整型值、字符值、实型值等,函数还可以带回一个指针型的数据,即地址。这种函数的定义形式如下:类型标识符函数名参数表)如:返回一个指向整型的指针适当的指针其类型应为函数返回指针所指向的类型。难于理解的时候,就把它暂时当做整型来看,就好理解多了2].指针数组3w数组名数组长度]*p[4],千万不要写成(*p)[4],这是指向一维数组的指针变量。指针数组多用于存放若干个字符串的首地址,注意一点,在定义指针数组时初始化,如下:!XN.指向指针的指针如:*:`.指针数组作函数的参数-\函数形式为)qJ函数的参数是从命令行得到的,指命令行参数个数,注意命令名也算一个参数,命令行参数都是字符串,他们的首地址构成一个指针数函数的形参用和只是一个习惯,也可以定义成别的名字。.指针小结$J有关指针的数据类型3]定义含义定义一个整型变量IP为指向整型数据的指针变量定义整型数组,它有n个元素定义指针数组,它有n个指向整型的指针元素)VP为指向含有n个元素的一维数组的指针变量F为返回整型值的函数6kP为返回值为指针的函数,该指针指向整型数据P为指向函数的指针,该函数返回一个整型值定义一个指向指针的指针变量.da'D(Zw新增了一种的时候再强制转换类型。如:'V+d=(n也可以将一个函数定义成型,如:-`表示函数返回一个地址,它指向空类型,如果需要用到此地址,也要对其强制转换。如(假设为+{指针应该说是c语言中比较重要的概念,也是c语言的精华,它有很多优点,但用不好也会带来严重性的错误,这就需要我们多用,多练,慢慢的积累经验。(A?&Y第十章结构体与共用体.定义结构体定义的一般形式:3JO结构体名$?成员列表定义一个结构体变量可以这样定义:结构体名结构体变量名4M.结构体变量的引用在引用结构体变量时应注意以下规则:C允许将一个结构体变量直接赋值给另一个具有相同结构的结构体变量。.结构体变量的初始化如:v/e.结构体数组O定义了一个数组,其元素为类型,数组有4个元素。注意数组各元素在内存中是连续存放的。量的个数来确定数组元素的个数。9T.指向结构体变量的指针S注意将结构体变量的首地址赋给指针变量的形式m//要加取地址符而指向函数和指向字符串的指针不用;|c在对引用结构体变量中的成员时,有三种方式:p;e9HN%f0M.指向结构体数组的指针*P&l9^则p为指向结构体数组的指针变量。这里应注意p指向则指向Pp是不对的。.用指向结构体的指针作函数参数"d虽然C允许用整个结构体作为函数参数,但要将全部成员值一个一个传递,开销大。所以用指针作参数,能提高运行效率。2oP)G用整个结构体作为参数调用形式:!Lp$R而且被调函数中也要定义成结构体变量;{tS用指针作参数调用形式:被调函数中定义成指针变量,:a.用指针处理链表用来存放整个链表的首地址。链表的定义形式如下u…/O用来存放下一节点的地址。如何进行动态的开辟和释放存储单元呢)b在内存的动态存储区开辟一个长度为失败返回*v在内存的动态存储区开辟n个长度为失败返回9jq释放由指向的内存区。是最近调用一次调用和时返回的值。上面函数中,n和为整型,为字符指针。.共用体6y定义形式:共用体名9A4U成员列表变量列表0Wq长度为最长的成员的长度。)z共用体类型数据的特点:$F同一个内存段可以存放几种不同类型的成员共用体变量中起作用的成员是最后一次存放的成员4a不能对共用体变量名赋值,不能在定义时初始化。不能把共用体变量作为函数参数'C共用体类型可以出现在结构体定义中,反之也可,也可以定义共用体数组)N]A另外,结构体名可以作为参数,而共用体名不可以N这两中数据结构在不同场合中各有所用。.枚举类型,@定义形式如下:举个例子5rG//定义枚举变量和被定义成枚举类型,他们的值只能为到之一。也可以直接定义枚举变量,这一点与结构体相L注意:枚举元素是作为常量存在的,他们是有值的c如:上面的定义中,的值为的值为1如:它相当于把赋给了7W11.用定义类型的作用就是能够让你定义一个自己喜欢的数据类型名来代替已有的数据类型名。如:5SN那么我就可以用来定义整型变量了。作用和一样。0Of用于结构体定义,如:4f/s8X)\等等#X\用有利于程序的通用与移植。e$G第十一章位运算!X概述所谓位运算是指进行二进制位的运算。在系统软件中,常要处理二进制位的问y-Ac提供的位运算符有:8L&按位与/u|按位或^按位异或^e~取反%fQ左移右移对于将一个单元清零、取一个数中的某些指定位以及保留指定位有很大用途d常被用来将一个数的某些位置。判断两个位值,不同为,相同为。常用来使特定位翻转等。&A~常用来配合其它位运算符使用的,常用来设置屏蔽字;H将一个数的各二进制位全部左移,高位左移后溢出,舍弃不起作用。左移一位相当于该数乘,左移n位相当于乘。左移比乘法运算要快的多。右移时,要注意符号问题。对无符号数,右移时左边高位移原来符号位为;如果符号位为取决于系统。移入0的称为逻辑右移,移入1的称为算数右移。位段员。如:*U3m(Mi1I其中分别占2位。I为整型,占4个字节。对于位段成员的引用如下:8P=等,但要注意赋值时,不要超出位段定义的范围。如位段成2位,最大值为,即,所以就会取5的两个低位进行赋值,就得不到想要的值了。关于位段的定义和引用,有几点重要说明p①若某一个段要从另一个字开始存放,可以定义{k另一单元)使用长度为0的位段,作用就是使下一个位段从下一个存储单元开始存放(7[②一个位段必须存放在用一个存储单元中,不能跨两个单元。③可以定义无名位段。如:这两位空间不用4^)d④位段的长度不能大于存储单元的长度,也不能定义位段数组L2{!|第十二章文件0?概述c语言将文件看成一个字符的序列,分为文件(文本文件)和二进制文件。即一个c文件就是一个字节流或二进制流。0~文件每一个字节放一个码,代表一个字符,输出与字符一一对应,便于逐个处c对文件的据都要先经过缓冲区,待缓冲区充满后,才集中发送k文件夹类型指针.ag义的,取名为,在中定义。6z定义了一个文件指针变量,以后对文件的操作都是通过进行的。文件的打开与关闭在对文件读写之前,要先打开文件。打开文件的函数为:,调用方式为:!a使用文件方式/]失败返回一个空指针样就和打开的文件联系在一起了。或者说p指向了,`W文件使用方式:,具体含义要记住。x文件的关闭为了防止数据丢失,程序结束前,务必将打开的文件关闭,即将文件指针与文件脱钩。用文件指针文件指针。成功返回,失败返回非#M文件的读写%X和1L将字符写入该字符,失败返回在中定义为符号常量。从指定文件读入一个字符,该文件必须是以读或读写方式打开的。调用形式为从指向的文件读入一个字符赋给,当文件结束时,返回一个,我们可以用函数1。这个函数适用于文本文件和二进制文件。)x和函数X可以读写一组数据。调用形式如下:{为一个指针,对来讲,是指从文件读出数据的存放地址,

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论