导言:C的笛卡尔之梦


准备工作

(一)WSL2

C源自unix,所以在unix平台中开发中较为友好。

windows 操作系统主要是用C++开发的,虽然自研的NT内核用到少量的C,但是在windows系统中C语言使用的库、函数和工具都和其它的C语言环境有些差异,所以windows作为C的开发环境显然不是明智之举。

好在2022年了,windos不仅自带了WSA安卓子系统,linux子系统WSL也早就安排上了。这使得我不要折腾我的树莓派或者是阿里云的ubuntu就可以用上linux的开发环境了。通过参考下面的教程我选择了WLS的第二版WSL2,发型版本是微软商店的Ubuntu 20.04.4 LTS。打开下载好的应用,创建了新的用户jesse,
sudo passwd 设置了root密码,
关闭窗口发现unbuntu已经自动添加到win11的Windows Terminal里面了。

(二)Vim的使用

代码编辑器我就选择程序员都爱的vim吧,ubuntu里面自带了,
关与vim的使用,vim 一共有三种模式

具体的命令如下

  • List item

(三)为ubuntu添加镜像源

添加国内镜像源,下面的代码是我运行的,需要会一点vim,我记得我第一次使用vim不会退出,直接抓狂。

sudo apt install gedit
sudo vim /etc/apt/sources.list
########################################
deb http://mirrors.aliyun.com/ubuntu/ trusty main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ trusty-security main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ trusty-updates main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ trusty-proposed main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ trusty-backports main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ trusty main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ trusty-security main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ trusty-updates main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ trusty-proposed main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ trusty-backports main restricted universe multiverse
deb http####################################################################s://mirrors.ustc.edu.cn/ubuntu/ impish main restricted universe multiverse
deb-src https://mirrors.ustc.edu.cn/ubuntu/ impish main restricted universe multiversedeb https://mirrors.ustc.edu.cn/ubuntu/ impish-updates main restricted universe multiverse
deb-src https://mirrors.ustc.edu.cn/ubuntu/ impish-updates main restricted universe multiversedeb https://mirrors.ustc.edu.cn/ubuntu/ impish-backports main restricted universe multiverse
deb-src https://mirrors.ustc.edu.cn/ubuntu/ impish-backports main restricted universe multiversedeb https://mirrors.ustc.edu.cn/ubuntu/ impish-security main restricted universe multiverse
deb-src https://mirrors.ustc.edu.cn/ubuntu/ impish-security main restricted universe multiversedeb https://mirrors.ustc.edu.cn/ubuntu/ impish-proposed main restricted universe multiverse
deb-src https://mirrors.ustc.edu.cn/ubuntu/ impish-proposed main restricted universe multiverse# 清华镜像源deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ impish main restricted universe multiverse
deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ impish main restricted universe multiversedeb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ impish-updates main restricted universe multiverse
deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ impish-updates main restricted universe multiversedeb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ impish-backports main restricted universe multiverse
deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ impish-backports main restricted universe multiversedeb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ impish-security main restricted universe multiverse
deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ impish-security main restricted universe multiversedeb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ impish-proposed main restricted universe multiverse
deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ impish-proposed main restricted universe multiverse# 阿里镜像源deb http://mirrors.aliyun.com/ubuntu/ impish main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ impish main restricted universe multiversedeb http://mirrors.aliyun.com/ubuntu/ impish-security main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ impish-security main restricted universe multiversedeb http://mirrors.aliyun.com/ubuntu/ impish-updates main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ impish-updates main restricted universe multiversedeb http://mirrors.aliyun.com/ubuntu/ impish-proposed main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ impish-proposed main restricted universe multiversedeb http://mirrors.aliyun.com/ubuntu/ impish-backports main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ impish-backports main restricted universe multiverse# 163镜像源deb http://mirrors.163.com/ubuntu/ impish main restricted universe multiverse
deb-src http://mirrors.163.com/ubuntu/ impish main restricted universe multiversedeb http://mirrors.163.com/ubuntu/ impish-security main restricted universe multiverse
deb-src http://mirrors.163.com/ubuntu/ impish-security main restricted universe multiversedeb http://mirrors.163.com/ubuntu/ impish-updates main restricted universe multiverse
deb-src http://mirrors.163.com/ubuntu/ impish-updates main restricted universe multiversedeb http://mirrors.163.com/ubuntu/ impish-proposed main restricted universe multiverse
deb-src http://mirrors.163.com/ubuntu/ impish-proposed main restricted universe multiversedeb http://mirrors.163.com/ubuntu/ impish-backports main restricted universe multiverse
deb-src http://mirrors.163.com/ubuntu/ impish-backports main restricted universe multiverse
注:系统代码更改为当前系统代码————————————————
版权声明:本文为CSDN博主「ETON2」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/ETON2/article/details/123529070##########################################
sudo apt-get update
sudo apt-get upgrade

(四)安装环境以来

sudo apt-get install build-essential

这一步是安装C/C++编译环境。Ubuntu缺省情况下,并没有提供C/C++的编译环境,因此还需要手动安装。但是如果单独安装gcc以及g++比较麻烦,幸运的是,Ubuntu提供了一个build-essential软件包。类似windows系统下面的MinGW。可以使用

 apt-cache depends build-essential

查看这些依赖具体是什么

(五)一些要求

编程态度

  • 写C代码时的意识状态:时刻想着尽可能预防错误的发生,并且会带着凡事皆不会顺利的想法。
  • 解决方案就是强迫自己慢下来,更加细致地去读写代码,一开始你也许会觉得很痛苦、很烦躁,那就增加自己休息的频率,最后你会觉得这其实也很容易做到。
  • C语言要求你完全聚精会神。
  • (调试)在证明正确之前,要先假设一切都可能是错的。
  • 如果你一直用“乱改直到能用”的方法写代码,到头来就是什么都不能用了。
  • C语言对你要求比较高,因为它要求你先计划好要创建的东西。

(六)拓展阅读计算机相关

了解计算机的启动过程和主引导扇区,让你的计算机从这里起飞吧

计算机简历

Unix操作系统 - 历史回忆录

【计算机博物志】PC操作系统40年:潮起与潮落

从0到1设计一台计算机


一、启用编译器

(一)创建文件

linux下面,万物皆文件,所以基本上要遵循4个命名规则,我在/home/jesse/目录下创建一个cPprogram文件夹

cd /home/jesse/
mkdir cPprogram
cd cPprogram
vim ex1.c #创建一个文件


按下esc后输入:wqb保存退出
马德报错了!但是我继续执行

./ex1

是有正常输出的,

(二)处理隐式声明函数bug

回头看了一下那个警告, implicit是隐式的,内含的, implicit declaration of function 则是隐式声明函数,
通过查阅资料,后明白了是怎么回事儿,然后参看一下教程发现教程里面也提到了,

#include <stdio.h>

把这行代码加到开头则可以完美执行了。

警告:隐式声明函数‘xxx’
implicit declaration of function 警告warning的原因及解决
该死的c语言的隐式函数声明法则

(三)附加题

1.删掉某一行

2.多打印5行文本

3.执行man 3 puts来阅读这个函数和其它函数的文档

二、用Make来代替Python

(一)编译的过程

区别于我们在数字电路中学过的硬件描述语言,程序设计语言是为了跟好的利用CPU来实行计算功能。

练习4:Valgrind 介绍
练习5:一个C程序的结构
练习6:变量类型
练习7:更多变量和一些算术
练习8:大小和数组
练习9:数组和字符串
练习10:字符串数组和循环
练习11:While循环和布尔表达式
练习12:If,Else If,Else
练习13:Switch语句
练习14:编写并使用函数
练习15:指针,可怕的指针
练习16:结构体和指向它们的指针
练习17:堆和栈的内存分配
练习18:函数指针
练习19:一个简单的对象系统
练习20:Zed的强大的调试宏
练习21:高级数据类型和控制结构
练习22:栈、作用域和全局
练习23:认识达夫设备
练习24:输入输出和文件
练习25:变参函数
练习26:编写第一个真正的程序
练习27:创造性和防御性编程
练习28:Makefile 进阶
练习29:库和链接
练习30:自动化测试
练习31:代码调试
练习32:双向链表
练习33:链表算法
练习34:动态数组
练习35:排序和搜索
练习36:更安全的字符串
练习37:哈希表
练习38:哈希算法
练习39:字符串算法
练习40:二叉搜索树
练习41:将 Cachegrind 和 Callgrind 用于性能调优
练习42:栈和队列
练习43:一个简单的统计引擎
练习44:环形缓冲区
练习45:一个简单的TCP/IP客户端
练习46:三叉搜索树
练习47:一个快速的URL路由
后记:“解构 K&R C” 已死

修改记录:

2022.4.20 建立表格开始记录
2022.4.23 2用make file 代替python
2022.4.23 2用make file 代替python
2022.4.23 2用make file 代替python
日期 记录
2022.4.20 建立表格开始记录
手机 练习2
练习3

参考书籍:

笨办法学C 中文版

《“笨办法” 学C语言(Learn C The Hard Way)》相关推荐

  1. ComeFuture英伽学院——2020年 全国大学生英语竞赛【C类初赛真题解析】(持续更新)

    视频:ComeFuture英伽学院--2019年 全国大学生英语竞赛[C类初赛真题解析]大小作文--详细解析 课件:[课件]2019年大学生英语竞赛C类初赛.pdf 视频:2020年全国大学生英语竞赛 ...

  2. ComeFuture英伽学院——2019年 全国大学生英语竞赛【C类初赛真题解析】大小作文——详细解析

    视频:ComeFuture英伽学院--2019年 全国大学生英语竞赛[C类初赛真题解析]大小作文--详细解析 课件:[课件]2019年大学生英语竞赛C类初赛.pdf 视频:2020年全国大学生英语竞赛 ...

  3. 信息学奥赛真题解析(玩具谜题)

    玩具谜题(2016年信息学奥赛提高组真题) 题目描述 小南有一套可爱的玩具小人, 它们各有不同的职业.有一天, 这些玩具小人把小南的眼镜藏了起来.小南发现玩具小人们围成了一个圈,它们有的面朝圈内,有的 ...

  4. 信息学奥赛之初赛 第1轮 讲解(01-08课)

    信息学奥赛之初赛讲解 01 计算机概述 系统基本结构 信息学奥赛之初赛讲解 01 计算机概述 系统基本结构_哔哩哔哩_bilibili 信息学奥赛之初赛讲解 02 软件系统 计算机语言 进制转换 信息 ...

  5. 信息学奥赛一本通习题答案(五)

    最近在给小学生做C++的入门培训,用的教程是信息学奥赛一本通,刷题网址 http://ybt.ssoier.cn:8088/index.php 现将部分习题的答案放在博客上,希望能给其他有需要的人带来 ...

  6. 信息学奥赛一本通习题答案(三)

    最近在给小学生做C++的入门培训,用的教程是信息学奥赛一本通,刷题网址 http://ybt.ssoier.cn:8088/index.php 现将部分习题的答案放在博客上,希望能给其他有需要的人带来 ...

  7. 信息学奥赛一本通 提高篇 第六部分 数学基础 相关的真题

    第1章   快速幂 1875:[13NOIP提高组]转圈游戏 信息学奥赛一本通(C++版)在线评测系统 第2 章  素数 第 3 章  约数 第 4 章  同余问题 第 5 章  矩阵乘法 第 6 章 ...

  8. 信息学奥赛一本通题目代码(非题库)

    为了完善自己学c++,很多人都去读相关文献,就比如<信息学奥赛一本通>,可又对题目无从下手,从今天开始,我将把书上的题目一 一的解析下来,可以做参考,如果有错,可以告诉我,将在下次解析里重 ...

  9. 信息学奥赛一本通(C++版) 刷题 记录

    总目录详见:https://blog.csdn.net/mrcrack/article/details/86501716 信息学奥赛一本通(C++版) 刷题 记录 http://ybt.ssoier. ...

  10. 最近公共祖先三种算法详解 + 模板题 建议新手收藏 例题: 信息学奥赛一本通 祖孙询问 距离

    首先什么是最近公共祖先?? 如图:红色节点的祖先为红色的1, 2, 3. 绿色节点的祖先为绿色的1, 2, 3, 4. 他们的最近公共祖先即他们最先相交的地方,如在上图中黄色的点就是他们的最近公共祖先 ...

最新文章

  1. HMTL判断ie版本
  2. 无重复字符的最长子串【哈希算法】-O(n)
  3. MYSQL数据库性能调优之六:备份
  4. html5无意义标签,无意义的div和span标签
  5. Mysql数据库的分离和附加转
  6. C# 利用反射动态创建对象[摘录]
  7. 问你个问题:50万存款算多吗?
  8. building xxx gradle project info的解决办法
  9. AcWing 866. 试除法判定质数(素数判定)
  10. (转)div+css布局之float与clear的用法
  11. 我的年终总结:做了9年SOC的一点点实践体会
  12. Java语言实现简单FTP软件------FTP软件远程窗口的实现(六)
  13. linux的IO调度算法和回写机制
  14. 无代码编程的兴起:借助无代码平台,无需编写任何基础代码即可开发软件
  15. php支付宝 缺少签名参数,【支付宝】退款接口 报 “缺少签名参数”
  16. GB2312字符集对应16进制ANSI、UNICODE、UTF-8编码 (5)
  17. 闯荡Linux帝国:nginx的创业故事
  18. html中颜色的编码,css颜色编码对照表
  19. react项目如何运行
  20. 敏捷转型行动笔记:内部敏捷教练实践

热门文章

  1. MySQL创建触发器的时候报1419错误( 1419 - You do not have the SUPER privilege and binary logging is enabled )
  2. BUUCTF中的reverse1
  3. 美国恐怖故事第七季/全集American Horror Story全迅雷下载
  4. npm run tsc报错 (声明文件报错||tsc.js报错)
  5. 养龟村长讲解三线闭壳龟的重要性,对于养殖的你深刻了解多少?
  6. 二维特征分类的基础_用特征提取技术降低数据集维度,你学会了吗?
  7. [论文总结]:Mixed Precision Training 混合精度训练 百度和英伟达联合发表 ICLR 2018
  8. 【基于ARM cortex-A53的音视频】
  9. 高频java基础面试题
  10. js 除了自己获取其他所有兄弟节点