初识
我是一名大一新生,学校开始教c语言了。
对于计算机专业的人来说,编程无疑是一项十分重要的技能。
虽然学校有在教,但是一周一节课的内容感觉还是太少了,看着周围好多早都掌握c语言的同学,实在坐不住,于是便自己到网上找视频先学一学。
就c语言来说,应该是一门打基础的语言,虽然对java,c++帮助不大,但是却能培养好编程的习惯与意识,这对初学者无疑是很有益的。
平时有空的话偶尔会看看c语言的视频,自己跟着把东西理解好并打几段代码出来也是有很大成就感的。
---------------------------------------------------------------------------------------------------------------------------------最近已近将c语言的基础知识都学的差不多了,下面是我学习的过程:
·····分支和循环语句, 分支语句:if(else), switch(case,break,default);循环语句:while,for,do while。
·····函数,分为库函数和自定义函数。最开始常见到的如:stdio.h(printf,scanf), string.h(strlen,strcpy),
math.h(pow), assert.h(assert), stdlib.h(malloc,realloc,free)等。
而自定义函数则是可以自己定义的函数,可以自己实现并在之后使用时可直接调用。
函数参数分为形参和实参,形参只在函数中生效,出函数自动销毁,实参则是传给函数的参数。
函数调用分为传值调用和传址调用,顾名思义,一个是传的变量的值,一个是传的变量的地址。
传值调用不该变原值,而传址调用由于传的是变量的地址,所以能够改变变量的值。
通过函数我们还可以实现递归。
·····递归是一种不断调用自身函数解决问题的一种方法,其主要思想是将大事化小。
但在运用递归时,我们要注意每次递归过后都要靠近递归的结束条件,防止出现死递归的情况。
·····数组,是一组相同元素类型的集合。如字符数组,整形数组,指针数组,结构体数组等等。
常见的有一维数组和二维数组,在实现三子棋和扫雷时会需要用到二维数组。
在使用数组时,需要防止越界访问,即超出了数组合法空间的访问,由于编译器不一定能检测出越界访问,所以我们需要好好注意避免这种情况发生。
·····操作符,下面是常见操作符的分类:
算术操作符(+,-,*,/,%), 移位操作符(<<,>>), 位操作符(&,|,^), 赋值操作符(=,+=,-=,*=,/=等), 单目操作符(!,-,&,sizeof,--,++), 关系操作符(==,>=,<=), 逻辑操作符(&&,||), 条件操作符(exp1 ? exp2 : exp3)等。
·····指针,其意思是我们存放数据的地址。我们常说的指针则是指指针变量。
指针和数组一样,也有很多类型。比如字符指针,整形指针,数组指针,结构体指针等。
既然是存放数据的地址,那各个类型的元素肯定会有其对应的指针。
我们在使用指针时,可能会出现野指针,而我们则需避免这种情况的发生。
野指针,就是指针指向的位置是不可知的的指针。一般野指针有三种可以的原因造成:
定义后未初始化指针,指针越界访问和指针指向的空间已被释放。
为了避免野指针的出现,我们应该定义指针时随便初始化,注意不要越界访问,并在释放后及时置空。
同时需要注意的是,二级指针是一级指针的指针,即存放地址的指针。
·····结构体,结构是一些值的集合,这些值称为成员变量。结构的每个成员可以是不同类型的变量。
结构的成员可以是标量、数组、指针,甚至是其他结构体。
要想访问结构体里的成员,可以使用“.”来访问。比如访问结构体a中的成员b,即为a.b。
但是当你想从结构体指针中访问成员时,则需要用“->”来访问,比如a->b。当我们传址调用结构体时,则会使用这种用法。
·····数据在内存中的存储,首先是整形在内存中的存储。一个整形占四个字节,那么这四个字节是怎么存储整形的呢?这里我们了解到以下概念:原码,反码,补码。
计算机中的整数有三种2进制表示方法,即原码、反码和补码。
三种表示方法均有符号位和数值位两部分,符号位都是用0表示“正”,用1表示“负”,而数值位
正数的原、反、补码都相同。
负整数的三种表示方法各不相同。
原码:直接将数值按照正负数的形式翻译成二进制就可以得到原码。
反码:将原码的符号位不变,其他位依次按位取反就可以得到反码。
补码:由反码+1就得到补码。
对于整形来说:数据存放内存中其实存放的是补码。在计算机系统中,数值一律用补码来表示和存储。原因在于,使用补码,可以将符号位和数值域统 一处理; 同时,加法和减法也可以统一处理(CPU只有加法器)此外,补码与原码相互转换,其运算过程 是相同的,不需要额外的硬件电路。
了解完原,反,补码后,接着便是大端,小端的学习。
大端(存储)模式,是指数据的低位保存在内存的高地址中,而数据的高位,保存在内存的低地址 中;
小端(存储)模式,是指数据的低位保存在内存的低地址中,而数据的高位,,保存在内存的高地 址中。
为什么会有大小端模式之分呢?这是因为在计算机系统中,我们是以字节为单位的,每个地址单元 都对应着一个字节,一个字节为8 bit。但是在C语言中除了8 bit的char之外,还有16 bit的short
型,32 bit的long型(要看具体的编译器),另外,对于位数大于8位的处理器,例如16位或者32
位的处理器,由于寄存器宽度大于一个字节,那么必然存在着一个如何将多个字节安排的问题。因 此就导致了大端存储模式和小端存储模式。
上面讲完了整形的存储,接下来我们再看看浮点型的存储。
根据国际标准IEEE(电气和电子工程协会) 754,任意一个二进制浮点数V可以表示成下面的形式:
(-1)^S * M * 2^E
(-1)^S表示符号位,当S=0,V为正数;当S=1,V为负数。
M表示有效数字,大于等于1,小于2。
2^E表示指数位。
---------------------------------------------------------------------------------------------------------------------------------
还没写完,之后有时间再继续:)
发布者:admin,转转请注明出处:http://www.yc00.com/news/1690848312a445583.html
评论列表(0条)