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

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

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

命名约定

C 语言不支持命名空间。如果你想编写一个公共库,或者想命名某个“模块”,则需要给所有公共 API 的名称加上一个前缀。这些名称包括:

  • 函数

  • 类型

  • 枚举值

另外,每个枚举也应该加上不同的前缀,这样才能分辨某个值属于哪种枚举类型:

enum color {COLOR_RED,COLOR_BLUE,...}

关于命名,并没有太多真正的约定,你可以随意选择蛇形命名法(snake_case)或驼峰式命名法(camelCase),但请记住保持一致!由于许多标准 C 类型都采用了 ptrdiff_t、int32_t 等形式,所以有人将类型命名为 my_type_t。

static

函数或文件级别的 static(静态)变量仅限文件内部访问。这些函数或变量不会作为符号导出,因此无法在其他源文件中使用。

static 也可以用在局部变量上,可以让变量在多次函数调用之间保持值不变。你可以将其视为一个仅限于该函数使用的全局变量。你可以利用 static 计算和存储数据,以供后续调用重用。但请记住,这种使用方法与全局状态或共享状态有同样的问题,例如线程安全、递归冲突等。

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

结构方法模式

如果你在学习 C 语言之前,学习过更有特色的语言,可能会发现很难将这些知识应用到 C 语言的学习中。例如,面向对象编程常见的一个概念:结构方法,即函数接受指向结构的指针,并通过指针修改结构或获取属性:

typedef struct {int x;int y;} vec2;void vec_add(vec2 *u, const vec2 *v) {u->x = v->x;u->y = v->y;}int vec_dot(const vec2 *u, const vec2 *v) {return u->x * v->x u->y * v->y;}

你无法扩展结构或实现类似于面向对象的功能,但采用这种思路来思考问题很有用。

const

以 const T 的形式声明类型 T 的变量或参数,则表示这个变量或参数不能被修改。这意味着,不能赋值,而且如果 T 是指针或数组类型,也不能被修改。

你可以将 T 转换为 const T,但反之不行。

设置函数的指针参数默认为 const 是一个好习惯,只有确实需要修改这些变量时再省略 const。

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

平台和标准 API

我们很难根据 #include <some_header.h> 来判断依赖项究竟是什么,它有可能来自:

  • 标准 C 库(缩写为“stdlib”)。比如:stdio.h、stdlib.h、error.h。

  • 这是语言规范的一部分,所有兼容的平台和编译器都应该实现。非常安全,可以放心使用。

  • https://en.cppreference.com/w/c/header

  • POSIX:操作系统 API 的标准。比如:unistd.h、sys/time.h。

  • 一般由 Linux、macOS、BSDs 实现。

  • 默认情况下,不可在Windows使用。如果使用 MinGW,则可以使用 POSIX API。如果想获得更完整的支持,可以使用 Cygwin 库。

  • 你可以通过官方的OpenGroup页面或帮助手册,查看POSIX头文件的所有详细信息(包括 C stdlib)。

  • 非标准操作系统接口。

  • 特定于 Linux 的 API。

  • Windows Win32(以及 C /WinRT——这是一种更现代的 C 接口)。

  • (Mac 的 OS API 是 Objective C(现在是 Swift),而不是 C。)

  • 安装在标准位置的第三方库。

你可以通过不依赖于平台的头文件与更多平台特定的代码进行交互,这样就可以通过不同的方式实现。许多流行的 C 库本质上只是对特定于平台的功能进行了统一的、精心设计的抽象。

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

整数

C 语言中的整数是一个非常大的坑。编写代码时,一定要小心。

大小

所有整数类型都有确定的最小位数。在一些常见的平台中,整数的大小都大于最小位数,例如 int 在 Windows、macOS 和 Linux 上都是 32 位的,但其最小位数是 16 位的。在编写可移植的代码时,你必须小心,不能让整数的大小超过最小位数。

如果想精确控制整数大小,可以使用 stdint.h 中的标准类型,如 int32_t、uint64_t 等。还有 _least_t 和 _fast_t 类型。

算术运算与整数提升

C语言中的算术运算有许多奇怪的规则,并产生意想不到的或不可移植的结果。

另外,请格外小心整数提升。

char 类型的符号

所有其他整数类型默认都有符号,但char可以有符号,也可以没有符号,具体取决于平台。因此,只有在作为字符时,这种类型才可移植。如果你想指定一个很小的数字,比如只有8位,也要指定符号。

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

栏目热文

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查看全文 >>

文档排行