C语言学习记录230614

        本来准备昨晚写当日的博文,但是由于自己之前海淘购买的东西地址不能采用中文,需要写一封外语的邮件跟对应运营公司沟通,忙着处理这件事,所以没有及时更新当日的博文,不过问题不是特别大,现在再补也不晚,接下来请把今天当做是昨天~~

        进行上完课后才发现,虽然一节课的课程时间很长,迄今为止已经上了6个小时,但其实还是在概览一下C语言的主要组成部分,演示一下各个语句、运算符、操作数的特性等等,按课程老师的说法,“并未进行很深入的探讨,现在就是简单的了解一下”。我有点吃惊,因为即使只是概览一下,穿插补充的不少小知识点,也已经让我收益很多。因为此前我觉得C语言已经算是入门了,所以还纠结要不要从头学C,现在想想,还是老老实实从头走一遍,就当是温故知新了,特别是在上课时,能同时与我此前学习的知识相互印证,这也不失快乐。

        废话不多说,今天大致上就试说了这么几个点,我按自己的理解整理,考虑到课程并未深入讲,我也就想到哪说到哪了。

        (一)常量

                昨天最后是讲到内部变量(局部变量)和外部变量(全局变量)的生存期(存储期)(生命周期)和作用域。今天开头则是大致讲了下常量的类型,我此前结合《C方法》一书,对常量的认知大概就停留在“int i=32;”,这个32就是常量上。

                上完课后,大致能清楚记得常量分为:字面常量、const 常变量、枚举常量、#define 定义的标识符常量,虽然之前不知道这么分,但是知道这么分后,其实仍然很合理。字面常量就是我此前理解的直接写在纸面上的固定数字;const 常变量则是在声明变量的同时,在变量类型前增加const,使之变为常变量,这里有一点很关键,常变量≠常量,他还是变量,但他具有常量的特性,非变长数组定义数组的情况下,下标内的数字,也就是数组大小得写常量,这里就不能写常变量,因为常变量是变量,而不是常量,其仅仅具有常量性质而已;枚举常量则是根据枚举类型衍生出来的常量,这块不展开,但需要知道枚举常量定义的量是常量,而不是变量;最后#define定义的标识符常量,这里就很好理解了,宏定义的标识符,假如#define NUM1 5,那么在程序编译后,NUM1会被替换成5,所以在程序内部角度看,它其实还是一个字面常量,而NUM1只是为了我们方便阅读而已。

                总结一下,常量不允许更改,常变量是具有常量特性的变量。

        (二)字符串、转义字符、注释

                字符串跟字符其实有着很密切的关系,字符串在C语言里是用字符数组定义的,而字符串跟字符数组的唯一区别就是,字符串数组的末尾在字符数组内多了一个用于表示字符串末尾点位的‘\0’(其ASCII码值为0,所以可以想象到字符串数组初始化0代表了什么)。

                举个例子,char word[]="Hello",这是字符串初始化的方式,该字符串在数组内是这样的word[6]={'H','e','l','l','o','\0'},这里的\0在初始化时可输入也可以不输入,但实际上都会占用一个字符数组的空间,这个\0同样也很重要,头文件<string.h>内包含的各种用于字符串的库函数都需要依靠这个末尾的符号来判断。那字符数组初始化hello是怎样的呢?大致是这样word[]={'H','e','l','l','o'},这种初始化方式,是不会让字符数组自己产生末尾的\0的。

                转义字符在《C方法》一说是,称之为转义序列,后续也按转义序列的说法来描述,转义序列跟scanf和printf函数密切相关,这里面门门道道很多,也涉及到一部分scanf和printf的运行原理,这里就简单说明一下转义序列的作用,主要是为了在输入输出时能正确表示那些不便输出,或在默认程序规则下,容易产生歧义的输出。比如我想两行各输出一个单词,分别是hello和world,那么printf(“Hello world”)显然并不能使之分为两行,在中间即使加无限个空格,也不会换行,那么换行我们怎么表示呢?这是只需要printf(“Hello\nworld”)即可,\n表示换行符(实际上在C语言内是代表的是回行符),或者要表示“/nihao/”,如果按正常输入printf(“/nihao”),最后输出的会是换了一行后的ihao,要想正常显示,需要在/前面再加一个/,使之不与/n组成换行符。即输入printf(“//nihao”)。转义序列有很多,具体可以网上自行搜索一下,这里就不展开了。

                注释在经典C是/*   */的形式,而C99参照C++增加了一个行的注释方式也就是“//”的注释方式,增加这种注释方式的主要原因是经典C的注释方式不支持嵌套,也就是/*/* */*/,这里最后一个"*/"会失效,第一个和第二个"/*”都会跟第三个"*/"匹配,所以C99增加了//的注释方式,就是为了解决这种问题。

        (三)选择和循环语句

                课程里讲了if和while,do以及for语句暂时未讲,那这里也就简单带一下就好了,可以在明天的博文里展开说,if(控制表达式)语句,这是if语句的标准格式,这里的语句是一句话,当想要有多个语句时,则需要采用复合语句的形式,也就是加个花括号,这种方式在后续的其他循环语句中也能采用,if的控制表达式可以是任意的,当为非0值时执行,注意是非0值,1、2、3、4、5、-1、-2等都可以让他执行,只有当表达式的值为0时,需要执行的动作,可以通过假如else来实现,格式为if(控制表达式)语句1;else 语句2; 。else if语句其实本质就是if和else语句的嵌套,但属于更便利的表达方式,这里就不展开说了。if语句按可以按中文来念出来,如“如果控制表达式成立(非0)时,执行语句1,否则执行语句2”。

                while语句他的标准格式是while(控制表达式)语句,跟if一样可以通过复合语句的方式来增加多条语句,这里的语句或者花括号内的所有语句,我们称之为循环体,当控制表达式的值非0时,执行循环体,每执行完一次循环体,就重新对控制表达式进行判断,知道控制表达式的值为0为止。while语句同样能念出来,“当控制表达式成立(非0)时,执行循环体,知道控制表达式的值为不成立(为0)”。

        最后还简单说了一下自定义函数,之前采用的scanf和printf函数都属于库函数,而自定义函数就是我们自己定义出来的函数,能自己调用,这里也有很多规则,诸如函数声明、函数原型、函数定义等等的概念,这里就不一一说明了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值