当前位置:首页 > 教育培训 >

c语言难不难学(数据结构c语言版难不难学)

来源:原点资讯(m.360kss.com)时间:2023-06-20 02:41:54作者:YD166手机阅读>>

【CSDN编者按】C语言是不少人的编程入门语言,本文作者惊呼,C语言太难了,要是我能早点知晓这些就好了!于是,他记录了学习C语言期间的一些好项目,CSDN 组织译者编译分享给大家。

原文链接:https://tmewett.com/c-tips/#good-projects-to-learn-from

作者:Tom M

译者:弯月

对于我来说,学习 C 语言好难啊。这门语言本身的基础知识并不是很难,但是“用 C 语言编程”需要用到各种知识,这些知识可没有那么容易掌握:

  • C 语言在各个平台和操作系统上的行为有所差异,因此你需要了解平台;

  • C 语言有许多编译器选项和构建工具,即使运行一个简单的程序也需要做出很多决定;

  • C 语言涉及很多与 CPU、操作系统、编译代码有关的概念;

  • C 语言的使用方式多种多样,远不像其他语言那样有中心化的社区和统一的风格。

在本文中,我想总结一下 C 语言的学习要点和建议,希望能对你有所帮助。

  • 学习资源

  • 值得借鉴的项目

  • 编译、链接、标题和符号

  • 不推荐使用的功能

  • 数组不是值

  • 编译器的各种选项

  • 三种类型的内存,以及何时使用它们

  • 命名约定

  • static

  • 结构方法模式

  • const

  • 平台和标准 APII

  • 整数

  • 大小

  • 算术运算与整数提升

  • char 类型的符号

  • 宏与 const 变量

  • 宏与内联函数

c语言难不难学,数据结构c语言版难不难学(1)

学习资源
  • TutorialsPoint C:基本知识介绍

  • awesome-c:库和工具列表

  • cppreference:C 语言和标准库的技术参考

c语言难不难学,数据结构c语言版难不难学(2)

值得借鉴的项目

在学习的过程中,阅读一些 C 语言代码会很有帮助。

  • Bloopsaphone:一个声音合成 Ruby 库,其核心有一个很小的 C 模块。概念少,结构好;

  • Simple Dynamic Strings(sds):有一个 .c 和 .h 文件,是一个很好的学习C语言的例子,说明了如何管理更复杂的资源;

  • Brogue CE:一款类 Roguelike 视频游戏。这个库相对较大,大约有3万行代码。我正在维护这个代码库,而且我们还有许多贡献者都是C语言高手;

  • stb 单文件库:其中包含许多中小型 C 模块,主要面向嵌入式设备和游戏机。

c语言难不难学,数据结构c语言版难不难学(3)

编译、链接、标题和符号

下面是一些关于如何编译 C 语言的基础知识。

C 语言的代码是用源文件 .c 编写的。每个源文件都会被编译成一个目标文件.o,这个文件就像一个容器装载了.c文件中编译后的函数。但这些函数是不可执行的。目标文件内部有一个符号表,这些符号是该文件中定义的全局函数和变量的名称。

# compile to objectscc -c thing.c -o thing.occ -c stuff.c -o stuff.o

源文件之间是完全独立的,可并行编译成对象。

如果想跨文件调用函数和变量,则必须使用头文件(.h)。这些文件也是 C 源文件,只不过使用方式比较特殊。回顾一下,目标文件只包含全局函数和变量的名称,没有类型、宏,甚至没有函数参数。如果想跨文件使用这些符号,就需要指定额外的信息。我们将这些“声明”单独放在 .h 文件中,然后由其他 .c 文件通过 #include 包含进来。

为避免重复,通常 .c 文件不会定义自己的类型/宏等,而是只包含自己或自己所属的模块或组件的头文件。

你可以将头文件视为 API 的规范,只不过实现可以放在多个源文件中。你甚至可以在同一个头文件中实现不同的平台或目的。

如果编译时遇到一个只有声明(例如通过头文件)、没有定义的符号引用时,编译出的目标文件会将其标记为缺失需要填补。

最终的这部分工作由编译器的“链接器”组件完成,由它负责将一个或多个对象连接在一起,匹配所有的符号引用,然后输出完整的可执行文件或共享库。

# link objects to executablecc thing.o stuff.o -o gizmo

概括起来,C语言的源文件中不能包含其他源文件,只能包括声明,然后由链接器完成匹配。

c语言难不难学,数据结构c语言版难不难学(4)

首页 1234下一页

栏目热文

c语言中关键字代表什么(c语言关键字及其含义举例)

c语言中关键字代表什么(c语言关键字及其含义举例)

任何事物都需要一个名字,名字在计算机里叫标识符,标识符是有命名规范的:1、标识符由字母(A-Z,a-z)、数字(0-9)...

2023-06-20 02:59:33查看全文 >>

c语言命令大全(c语言指令命令大全)

c语言命令大全(c语言指令命令大全)

C程序的源代码中可包括各种编译指令,这些指令称为预处理命令。虽然它们实际上不是C语言的一部分,但却扩展了C程序设计的环境...

2023-06-20 02:31:31查看全文 >>

大一c语言容易挂科吗(大一c语言怎么才能不挂科)

大一c语言容易挂科吗(大一c语言怎么才能不挂科)

在大学阶段每学期都是需要进行期末考试,每门专业课的成绩都需要达到及格线以上。如果成绩不合格的话就会被挂科,大学正常的挂科...

2023-06-20 03:03:10查看全文 >>

c语言中的32个关键字通俗含义(c语言关键字详细解释)

c语言中的32个关键字通俗含义(c语言关键字详细解释)

auto 局部变量(自动储存) break无条件退出程序最内层循环 case switch语句中选择项 char单字...

2023-06-20 02:37:56查看全文 >>

c语言关键词详细解释(40节免费编程课)

c语言关键词详细解释(40节免费编程课)

保留字(reserved word) 保留字又称关键字。 指在高级语言中已经定义过的字,使用者不能再将这些字作为变量名或...

2023-06-20 02:34:31查看全文 >>

c语言关键字翻译(c语言关键字中英文翻译器代码)

c语言关键字翻译(c语言关键字中英文翻译器代码)

在文章 和 中对关键const和static详细讲解,这一节将继续讲解关键字register&extern。通过...

2023-06-20 02:56:08查看全文 >>

c语言中关键字有多少(c语言一共有多少个关键字)

c语言中关键字有多少(c语言一共有多少个关键字)

喜欢的可以收藏转发加关注谈及C语言,我想凡是学过它的朋友都有这样一种感觉,那就是“让我欢喜让我忧。”欢喜的是,C语言功能...

2023-06-20 03:15:38查看全文 >>

c语言中int是什么意思(c语言里面的int是什么意思)

c语言中int是什么意思(c语言里面的int是什么意思)

C语言中有没有见过(int [2]){19,20}或者int (*pt2)[4]的使用方法,字面上可能不好理解,这是C9...

2023-06-20 02:42:30查看全文 >>

c语言关键字37个及其含义(c语言关键字及其含义举例)

c语言关键字37个及其含义(c语言关键字及其含义举例)

这次跟大家分享的,是关于C语言里面常用的16个关键字。通通给你们整理出来了~赶紧拿小本本记下来~!下次发布剩下的~量不在...

2023-06-20 02:44:29查看全文 >>

c语言空字符(c语言怎么使字符串为空)

c语言空字符(c语言怎么使字符串为空)

C语言中是没有字符串这个变量类型的,但是我们可以把字符串存储在char数组中,这个数组的最后一位是字符\0,即空字符,A...

2023-06-20 02:54:43查看全文 >>

文档排行