《学长讲C》
文章平均质量分 83
把自身经历和C语言的教程相结合,用一种对话的方式去讲述C语言,通俗易懂的语言要比传统的教程好理解的多,更适合刚入门的同学了解和学习。
代码骑士
学习、记录、进步、分享。(断剑重铸之日,骑士归来之时!)
展开
-
学长教你学C-day0-前言
小刘是一名计算机专业的学生,今年已经大三了,身为老学长,那不如我们就叫他老刘吧。老刘最近听说学院举办了一个叫做“IT义锋志愿者”的活动,内容是让高年级的同学给低年级的同学讲课。老刘心想:“最近不是很忙,而且这两年的学习基本功还算扎实,也有一些自己的心得,要不我去试试?看着报名表的上有C语言的科目,老刘一下就来了兴致,当年用C语言写游戏的样子还历历在目,初学指针和内存也没少掉头发。但是现在已经今非昔比了,老刘不但对C的图形库有了更加深刻的认识,而且也能玩转指针和内存了。5、C语言循环结构与选择结构。原创 2022-10-23 12:12:11 · 439 阅读 · 0 评论 -
学长教你学C-day1-程序是如何在计算机上运行?
老刘微微一笑,道:“学弟你还挺刨根问底的嘛,这个问题问的很好,很多初学者都有过这种问题,学弟你先别急,我这就给你们好好讲讲程序是怎么在计算机上运行的。”老刘笑到,“学弟你好呀,我是老刘。“首先,我们的程序一开始写好是保存在硬盘中的,当我们点击了编译时,程序会被编译器编译成计算机能够识别的可执行文件(也就是二进制文件)我们再点击运行,硬盘中的可执行文件会传递给内存,传递到内存中的数据会通过系统总线传递给CPU,CPU拿到数据后会进行处理,最后将结果返回给内存并显示在屏幕上(输出设备)。有人摇头,有人点头。原创 2022-10-24 21:11:10 · 227 阅读 · 0 评论 -
学长教你学C-day2-C语言的输入与输出之printf()函数
)这条语句中就包含着C语言的一个输入函数printf(),函数我们用初等数学的思想可以理解为两个数集之间存在的某种映射关系,例如f(x)=ax+b,其中x是自变量,f(x)是因变量,而printf()也是与之类似的,但是在C语言中我们更喜欢将数学里的因变量x称为“参数”,f(x)的结果我们称为“返回值”,也就是说,当我们在printf()函数里传递一些参数的时候,就会对应的得到一个结果。“除了前面用过的‘%s’、‘%d’以外,printf()还支持很多其他的占位符,大家可以看一下下面的编码格式。原创 2022-10-26 22:17:22 · 490 阅读 · 0 评论 -
学长教你学C-day3-C语言的输入与输出之scanf()函数
,同学们齐声说:“理解了。“可以看到上述代码中有两个输入函数scanf(),其中变量a是一个整型,输入之后按下空格或者回车输入另一个变量str,其中str是一个字符数组可以接收字符串型的变量,又因为数组的首元素就是数组所在的首地址,所以我们在用scanf()输入数组变量时也可以不加‘&’,如下:[code_2]”“可以看到,scanf()的在语法上的定义是和printf()是一样的,也是一个指针变量常量,也就是说scanf()与printf()一样可以支持不同格式的变量传入到字符串中。原创 2022-10-27 23:19:22 · 932 阅读 · 3 评论 -
学长教你学C-day4-C语言字符串的输入与输出函数
这里我们键入一个‘C’,然后屏幕就只输出了一行‘C’,这个C显然是putchar()指令的结果,那么我们键入的C去哪了呢,答案是因为有getch()函数的性质,把我们输入的字符给隐藏掉了,所以我们只能看到输出的C而看不到键入的C。“首先这么写是一点问题都没有的,但是同学们不要忘了,printf()函数的参数本身就是一个字符型的指针变量,既然本来就是字符型,那我们还需要使用格式控制符吗,直接输出不也行吗,如:[code_2]”这个函数与putchar()的语法定义相同,作用是可以接收单个的字符。原创 2022-10-29 21:57:50 · 870 阅读 · 1 评论 -
学长教你学C-day5-C语言变量与数据类型
小刘笑道:“指针的全名叫指针变量,从表面来看他其实就是个变量,但是从深层来看因为它存储的数据有些特殊,是内存中的地址,所以我们有时才会说‘指针就是地址’,逻辑上讲指针变量存储的是地址变量,那不谈变量指针不就是地址了吗?“当然不是,在用unsigned修饰整数型变量时,原本内存中表示负数的位数全都用来表示正数了,也就是说,当我们用unsigned修饰变量时,数据的最大值会提升一倍,而最小值变成了0,就是因为负数已经不存在了,简单来说就是牺牲负数表示正数,正数最大值扩大一倍。代码表示:[code_11]”原创 2022-10-31 21:21:31 · 265 阅读 · 0 评论 -
学长教你学C-day6-C语言内存分区
主函数也是函数,那么我们之前写过的代码里面的变量其实都属于局部变量[补充说明1],是存储在内存分区中的栈区的。变量也是如此,在内存中是有专门的地方来存储变量和其他数据的。“上图就是Linux下32位环境的用户空间内存分布模型,内存模型都是由操作系统构建的,虽然操作系统的不同会对内存模型产生影响,但是基本上大同小异,这里以Linux系统为例是因为它的模型比较经典且更好理解。3、生命期不同:全局变量的生命期和主程序一样,随程序的销毁而销毁,局部变量在函数内部或循环内部,随函数的退出或循环退出就不存在了。原创 2022-11-01 21:07:33 · 344 阅读 · 0 评论 -
学长教你学C-day7-C语言指针
在赋值的时候,指针变量的数据类型可以理解为对应数据类型的地址,所以在给p1赋值时,a的前面加&,说明我们把a变量的地址赋值给了指针变量p1;“上面的代码中我们定义了两个变量,一个整数型变量a,一个字符型变量str,然后我们输出两个变量的地址,%#X表示输出的是带前缀0X的十六进制数,输出a变量的地址要加&(取地址符),数组str就直接代表了数组的首地址,所以不用加&。没错,指针作为变量也是有自身的地址的,指针变量的值是地址,且指针自身也有自己的地址,这点大家一定要注意区分,不要搞混了。原创 2022-11-03 18:27:27 · 268 阅读 · 0 评论 -
学长教你学C-day8-C语言三大基本运算符
算数运算很简单你可以理解为我们小学学的加减乘除,逻辑运算其实就是大家在中学学过的“与、或、非”,今天讲完我们能用代码对数据实现这两种运算方法,我们的任务就算完成了。“在上述代码中我们使用了两种除法符号,一个是‘/’,C语言里我们用这个符号进行‘取整’,就是得到除法算式结果的整数部分;C语言的算数运算符有以下这些:”“除了算数运算和逻辑运算以外,C语言中还有很多其他的运算,比如进行大小比较的比较运算,计算二进制的位运算,还有赋值运算等等,剩下的这些也都很好理解,大家看看教材就能理解了,今天就将这么多,下课。原创 2022-11-10 15:13:43 · 711 阅读 · 0 评论 -
学长教你学C-day9-C语言循环结构与选择结构
小刘最近在读《老子》,被道家“一生二,二生三”的哲学思想迷住了,他不禁想代码是谁生的呢?首先代码就是一堆字符,字符不是代码,就像“白马非马”,但是当字符按照一定的顺序组织起来时,就有点逻辑了,杂乱无章的字符好像有规律可循了,再给每个字符赋予一定意义,那么代码就出现了。表达一定含义的字符有序组合,就是代码。那么是不是就可以说,思维生逻辑,逻辑生结构,结构生代码呢?这时一个QQ消息的声音传来打破了小刘的沉思,上面写着:“学长你怎么还没来?”,小刘一拍脑袋说:“坏了,忘了今晚上课了!”说着就披上一衣服飞奔到教原创 2022-11-16 19:34:48 · 816 阅读 · 0 评论 -
学长教你学C-day10-C语言数组
首先,从变量的定义角度讲都没有问题,但是很明显,我们存储的是一串连续的变量,但是变量在内存中的声明可能并不是连续的,也就是说,我们的变量在定义时,内存空间是随机获取的,那么有没有一种方式,能在内存中获取一串连续递增的地址空间来存储一些变量,方便我们循环遍历呢?“从输出的十进制的地址可以看出,数组元素a[0]、a[1]、a[2]的地址空间是连续的,并且每次地址增加4,因为我们申请的数组类型是int类型的,前面我们讲过,一个int类型变量会占4个字节,所以连续的地址号会相差4。“好,写完可以回到座位了。原创 2023-01-14 22:31:21 · 416 阅读 · 0 评论 -
学长教你学C-day11-C语言结构体、枚举、联合体
前面我们学习了数组,从数据类型来看,数组就是具有相同数据类型的变量集合;从内存空间来看,数组就是一串由相同大小的数据空间组成的较大的内存空间。那么结构体是什么呢?从内存角度讲,结构体也是一块地址空间,它的空间大小是由里面定义的变量大小决定的。它和数组最大的不同就在于,结构体中既可以放相同类型的变量,也可以放不同类型的变量,从而使得不同的数据类型放在一块空间中,并且也可以申请多个连续的相同的结构体空间组成结构体数组。举个例子:定义一个学生结构体,包含姓名,学号和分数。结构体所包含的变量或数组。原创 2023-01-28 23:02:29 · 501 阅读 · 0 评论 -
学长教你学C-day12-C语言函数
其中main()也是函数,只不过他是一个比较特殊的函数,人称:主函数。其中f称为映射法则,它可以用很多其他符号来表示,括号中的x是函数的一个参数,或者叫自变量,通过等号右边的式子,对参量进行运算,最终得到的值就是通过函数想要最终得到的结果。“其中函数类型和函数返回值的类型是一致的,形式参数是在函数体中才有效的,函数外则无效,通常我们想要拿一个变量到函数中进行运算,那么我们在调用函数的时候,将实际参数的位置放到与形式参数对应的位置即可,如果你的函数不需要传入其他的参数,在定义时括号中也可以什么都不写。原创 2023-01-28 19:13:13 · 540 阅读 · 0 评论 -
学长教你学C-day13-C语言预处理指令
#define 叫做宏定义命令,它也是C语言预处理命令的一种。所谓宏定义,就是用一个标识符来表示一个字符串,如果在后面的代码中出现了该标识符,那么就全部替换成指定的字符串。#include 的处理过程很简单,就是将头文件的内容插入到该命令所在的位置,从而把头文件和当前源文件连接成一个源文件,这与复制粘贴的效果相同。“我们在代码编写的开头都会写#include、或者#define,这种以#开头的命令称为预处理指令。#表示这是一条预处理命令,所有的预处理命令都以 # 开头。“例如,将原来的示例改为“”。原创 2023-01-28 22:18:01 · 372 阅读 · 0 评论 -
学长教你学C-day14-C语言文件操作
我们的C语言学习也马上接近尾声了,今天我们来讲最后一个内容:C语言的文件夹操作。“那么什么是文件呢?其实C语言里的文件是数据源的一种,最主要的作用是保存数据。例如txt、word、pdf等等都是不同的存储数据的形式。通过C语言可以和这些保存数据的文件建立一种连接,从而达到用程序读写文件的目的。“有的时候,硬件也可以看做是一种文件:”“操作文件的正确流程为:打开文件 --> 读写文件 --> 关闭文件。文件在进行读写操作之前要先打开,使用完毕要关闭。原创 2023-01-29 10:51:11 · 612 阅读 · 0 评论 -
C语言文件读写操作详解
【代码】C语言文件读写操作详解。原创 2023-02-02 14:59:28 · 3255 阅读 · 1 评论