在学习中思考——C语言学习总结小记2021.12.19

Hello各位!欢迎来到一飞的博客!

正如标题所言,在C语言的学习中,加入自己独特的思考非常重要!

前排记:考试周开始了,21号就陆续有考试开始了,所以大家看到的这篇博客是我用时几天慢慢写出来的~

另外提一嘴,上次我的这篇博客,居然冲上热榜了!太感谢大家对我的关注了!

C语言学习心得感悟2021.12.14

 

总体概览时期结束

因为要复习其他考试,所以每周只能拿出不多的时间学习,但是用了10天过了一遍C语言的大概知识点,和10天之前相比,已经感觉大不一样了!

这十天里,虽然做的题不算多,但是加起来也有十几道,做这些题最大的收获不是掌握了多少多少点,而是让我对C语言的写法有了一个初步的认知,这种感觉就像是在上高中之初先看了一些基本概念,然后做了点基本概念题,对高中知识有个大概了解。就是这个意思。

做一下接下来的安排:

虽然我可以开始系统地学习了,但是考虑到仍然在学校内,写下这篇文章时,我仍然有两门课要考,所以我的重心仍然会是复习;不过好在这两门是计算机和高数,我都相对有把握,所以会相对增加一些C语言的学习时间

慢慢来。好,就这样。

做题回顾时注意到的小细节

1.常用语句末尾要加分号

看起来太平常也太微不足道了,但这就是我实实在在又犯了的错误,再次回顾上周做的几道简单的题,在输入打印printf时,末尾没有加分号,小细节呀!要时刻记住!养成良好习惯!

另外,还注意到,if、while等条件语句后面的条件要用小括号括起来,而且括号后面不用加分号或者其他符号,这和python是不一样的

2.大括号的一些用法

先说说刚刚弄清楚的,承接上文,就是if或者while语句后对应要包含的内容,要用大括号包起来,但是我看到很多代码的大括号直接加在首尾,我倒觉得这么加更舒服点:

#include <stdio.h>
int main()
{
    int a = 1;
    int b = 0;
    //这是我见过的一种
    if(a>b){
        printf("%d\n",a);
        printf("%d\n",b);
        }
    //但是我觉得好别扭,我想写成这样
    if(a>b)
    {
        printf("%d\n",a);
        printf("%d\n",b);
    }
    return 0;
}

另外,大括号还用于函数的内容定义与函数的使用,main函数就是用大括号的。

3.在本地编译器里要用scanf输入的那一串代码

一上手,发现几天不输,有些遗忘,于是赶快加以巩固,相信不久我就能把这些基本细节融入到我的自然习惯中了。就是下面这一串了,我又回顾了一次

#define _CRT_SECURE_NO_WARNINGS 1

4.关于浮点数的输出

刚学的时候觉得没什么,但是有的时候用起来发现还是得细一些

我做题时写了一个max函数,用这个函数默认输出的是整型!但是我的计算式是一个分式,于是最后结果直接按整形结果输出,变成了0......

另外,定义浮点数用float,打印输出时得用%f,必要要求小数位数时,还要在前面加 .1、.2等,表示你要输出几位小数。double没怎么用,还不好说。

新接触到的一些概念

1.关于static

讲到static时,就要扯到内存这一概念了。实际上,我是在后面看到指针时,才对内存和地址等概念有一个相对清晰的认知,这里不过多阐述。

实际上,用static对变量加以定义时,变量的存储位置会由栈区改变到静态区

static可以用于定义局部变量、全局变量和各类函数,且被定义变量是可以修改的

惭愧的是,我现在并不能独立地很清楚地举出这个关键字的用法,当时看了一个例子,但是现在也已经忘了呃呃呃......不过还是那句话,我并不担心,我迟早会看回来的

2.extern用于声明外部变量

如上所述,只要在定义变量时在前面加上extern,就算是另一个源文件里的变量也一样可以拿过来用啦!

另外,除了变量之外,所有的函数也是自带外部连接属性的,可以直接用如上方法进行链接!

又得知一条规则,就是被static定义过的变量不可被外部引用,此时extern就失效了。

3.关于宏

这玩意貌似也是可以定义一些量,而且写起来我看着比也挺舒服,比如

#define MAX 1000
#define CHAR "I love you"

好像一般习惯上会将宏变量名大写,用于区分别的类型

另外,宏的输入类型貌似没有什么限制?我现在也不太清楚,只是粗略了解。

4.指针(终于看到它了)

之前我还一直好奇,老看到有人说什么指针,我还琢磨,指针是个什么玩意?这不看不知道,原来指针在一定程度上就可以解释为地址

回到我最开始用scanf时,当时在要赋值的变量前要加取地址符号&,之前我还不理解,地址是什么?一查,地址就是指针。我更迷惑了,哪跟哪?

其实这里就开始和内存扯上关系了。我原以为内存是个很抽象的东西,实际上,它居然是实物,我以为内存条是实物而已,原来内存就是每一个用于存储的基本单位,而系统在内存上存储数据时,每一个内存上就会对应一个地址,通过地址就可以访问这里的数据,真的很神奇!

回到指针。这里引入了一个新的名词,叫指针变量,顾名思义,一定是用来存储地址的。它的一般定义形式为 变量类型*变量名

由于%p表示打印地址,所以习惯上用p加原变量名来给这个指针变量命名

我在VS里自己输了一个%p打印了一下,神奇地发现每次打印的同一个变量的地址也不尽相同,我琢磨着也许是系统会根据电脑中程序的运行情况来自主分配内存地址,而不会认定一个地方,这是很灵活的!

由于在用%p打印地址时要用到&取地址符号,于是我突发奇想多试了几下,进行了下面代码里的一串比较:

int x =0;
int* px = &x;//定义指针变量px
printf("%p",&x);//这里打印的是x的地址
printf("%p",px);//这里打印的也是x的地址,因为px是被定义指向x的指针变量
printf("%p",&px);//这里打印的是px的地址,也就是说指针变量也和其他变量一样,占用一个地址
  

小小细节,一不小心还会弄错,说明弄清概念很重要哈!

最后关于指针,是*在这里表示解引用,比如

int x = 0;//定义变量x为0
int* px = &x;//定义指针变量px
*px = 1;//解引用px,将x再次赋值为1

写在最后

唉,这篇文章跟我开头想的一样,最终用了三天完成,开写的时候是12.20晚上,今天是22晚上!

记一些杂谈~

刚刚考完计算机理论,真的很难受哇,明明老师讲的很粗略,却考的那么细!好多概念只能靠自己背!而且重点知道的太晚,很多东西明明看了却没记住!呜呜呜~不过好在不算多~

今天跟我一个同学聊天,她学的是计科专业,但是很奇怪,他们不学C语言,而是直接学的C++,同时还学着网页设计等多门课,跟我打听的我们学校的计科专业学的东西大不一样~想问她个C语言的问题,她说无能为力,我发出来,她也能给我找问题,哈哈哈!

总之,最后备战高数的一周多,在这立个flag,看看高数期末能不能再上一次90!

最后,再次感谢您的阅读啦!关注我,见证我的学习历程,和我一起成长吧~

我是一飞,一名有思想,想要成为变成编程大神的大一学生~

点击下面文字查看我的往期学习回顾!

第一篇博客——梦开始的地方

周末C语言基础学习小结

C语言学习心得感悟2021.12.14

  • 31
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 35
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值