初识

初识

我是一名大一新生,学校开始教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

相关推荐

  • 初识

    2023-8-1
    100
  • LG KF600灵趣屏百变界面赏

    LG KF600灵趣屏百变界面赏

    11月前
    240

发表回复

评论列表(0条)

  • 暂无评论

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信