初始C语言——梦启程的地方

简介: 数据类型变量命名规则分类注意常量分类字符串转义字符注释C语言的注释风格C++的注释风格

目录


前言

正文

数据类型

变量

命名规则

分类

注意

常量

分类

字符串

转义字符

注释

C语言的注释风格

C++的注释风格

选择语句

if语句

循环语句

while 循环

函数

数组

操作符

关键字

typedef

static

#define定义常量和宏

指针

结构体

总结


前言


 在上一篇文章中我详细介绍了C语言中的启蒙代码—Hello Word!中各语句的具体用途与常见错误,前文的目的就是带大家进入C的世界,而本文就是带大家正式在C的世界中远航,让梦启程,争取以后能拿到满意的offer!


 注意:图片中代码的头文件位于文件最顶部,因截图无法截取,所以默认已引头文件


f4dcec5afc2f68a71bebabb5d806eb5.png


图片来源:2020年互联网岗位如何面试拿到满意的Offer? (baidu.com)


正文


本文的目的就是带着大家把C语言中的知识点都过一遍,让大家对C语言有一个立体的认识,后面再对具体的知识点展开详细讲解,所以本文的知识点可能会有点多。秉持着通俗易懂的理念,文中提到的知识都会尽可能简单,配图讲解也会更加详细,争取做到一点就通,点到为止。


数据类型


在C语言中有许多数据类型,这些数据类型有着不同的大小和功能,目的就是将数据分档次,使用起来更方便(对号入座)。可能大家没什么概念,就拿我们日常生活举例,比如我们的人民币,分一元、五元、十元、二十元、五十元和一百元这几个档次(可能大家已经好久没见过纸币了),当购买一根雪糕时,使用五元或十元进行结算即可,没必要使用更高的面额(可能有人想说雪糕刺客),将价格对应存储到我们C语言中,int是4个字节(4个字节存储范围为-2^31~2^31,很大了已经),而long则是4~8个字节,当int储存不了时就需要使用long,就像是遇到雪糕刺客需要面额更大的五十元。


上面的例子只是纵向说明了数据类型的差异,关于float单精度浮点型和double双精度浮点型呢?因为所谓的浮点型就是用来表示小数部分的,也就是精度,其实我们依旧可以用人民币的例子,比如某多多商品价格喜欢标9.9或19.9,这时如果想把这个价格存储在C语言中就需要用到float单精度浮点型,即float price=9.9f; float在使用时需要在数字后面加上f,不加的话默认为double型,关于float的存储范围(即精度范围)—8位有效数字,double就更精准了。


关于float更详细的介绍:float的精度和取值范围_AlbertS的博客-CSDN博客_float精度


最后再来说说字符型,这个不同于前两个不只能表示数字,还能表示英文字母和特殊符号,经过后续的迭代,现在甚至能表示中文(以字符串的形式储存,一个中文两个字节)这是因为char有ASCII码的帮助(美国信息交换标准代码),在ASCII码中,不同的数字有着不同的含义,比如65表示A,97表示字母a,char的大小是1个字节,这是很精准的(相较于上面的数据类型),在后面进行指针操作时,char*能做到只移动一个字节,手术刀般访问内存。


image.png


以上就是各数据类型的介绍,大概能看懂就行了。接下来我将用代码的形式再次介绍各数据类型


59c598229d4ef520691cd8105bf6418.png


下面我将给大家介绍各数据类型对应的格式


7fe17d2911375bd38dd303e04ac91fe.png


了解基本格式后,我们现在通过代码来说明各数据类型所占的内存大小

漏了个短整型,格式是%hd——短整形(short),大小是2个字节,用的比较少


c5464601d1621e35ea73430dac757af.png

//注意:sizeof是库函数,可以计算指定量大小
int main()
{
  printf("%d\n", sizeof(int));//4
  printf("%d\n", sizeof(long));//4~8
  printf("%d\n", sizeof(long long));//8
  printf("%d\n", sizeof(float));//4
  printf("%d\n", sizeof(double));//8
  printf("%d\n", sizeof(char));//1
  return 0;
}

常见错误 


fecf468ab486603d3aa3bf8f57948db.png


数据类型没多知识,只要知道基本的类型大小和输出格式就可以使用了


变量


所谓变量就是可变的量,比如我们的年龄、成绩、工资,这些都是可以根据现实情况而改变的量,在我们C语言中,常常需要这样的变量来进行运算赋值,而变量都是我们自己命名的,为了避免混乱,C语言标准就规定了一些变量命名规则


acd040a7f28e57ff601e461475b3b6e.png

命名规则


1.只能由字母(包括大小写)、数字、下划线组成

2.不能以数字开头

3.长度不能超过63个字符

4.变量名中区分大小写,比如abc和ABC不同

5.变量名不能使用C标准已经预设好的关键字,比如sizeo





分类


我们将变量分为了全局变量和局部变量


全局变量是指作用于全局(整个工程的变量),通常写在函数体之外(包括主函数)或者通过#define进行宏定义。全局变量的作用域是整个工程,生命周期则是整个程序。全局变量是一个比较危险的变量,因为范围太大,因此我们前期尽量使用局部变量。


30fbc9e2f789d492e98b57b9b5bba06.png


—局部变量就是指在一个局部内定义的变量,这种变量一般只能在被定义的局部范围内使用,局部变量通常出现于函数体内部(包括主函数)或者在函数之内的有一层{ }内部。局部变量的作用域是变量所在的局部范围,生命周期则是进入作用域开始,出作用域结束。局部变量虽说能力比较有限,但是比较安全,适合前期学习使用


9a8817e71207f5d6b0aa75ddb26cd4e.png


590e0ea35d20c183c419dd3f464cdb2.png


注意


当全局变量与布局变量命名一致即起冲突时,局部变量优先,但局部变量的改变并不会对全局变量造成影响

fd6c49fa35c60b4fab6178553ecf861.png


常量


常量是变量的对立面,即不能被改变的量,比如我们高考分数、圆周率、身份证号码等,C语言中常量的主要作用是直接输出或作为判断依据,一般我们常量出现于以下几个场景。

分类


1.字面常量,这个就是很普通的常量,比如数字100、数字3.14、字母 a等


bf3b3fc31b7e1abb9262e514a9026d8.png


2.const修饰的常变量,const是常量的意思,将其放在变量定义前,即可将变量锁定为常变量,本质上还是变量。比如 const int age=18,这样表示永远18岁,将其保护起来,一般的赋值方法无法更改值,只能通过指针找到地址的方式改变值。


ad95a9f53b1c167bbaf5f258d83699a.png


3.#define定义的标识符常量,这个是一个宏定义,作用于整个工程,还可以解决C4996问题

4b8a1f1495f15556a07ade716fcbb2c.png


4.枚举常量,这个常量前期比较少见,关键字是enum,但他本质上是常量,枚举的意思就是一个一个数出来,从0开始 


d9dfb8e7f26a6ba0923a49beaddb96d.png


//4.枚举常量
enum Sex
{
  man,
  woman,
  secret
};
int main()
{
  enum Sex s = man;
  enum Sex e = woman;
  enum Sex x = secret;
  printf("%d %d %d\n", s, e, x);
  return 0;
}

字符串


字符串就是由一串字符组成的串,比如字符H、e、l、l、o串在一起就组成了Hello这个字符串;字符串的结束标志是 \0 ,在C语言中我们的中文是以字符串的形式存储的,需要用到字符数组,空间尽量分配大一些,一个汉字就相当于两个英文字母,换句话说一个汉字占2个字节大小的空间。


a12a7c30705b38ac36a330ba14189ba.png


\0 是字符串的结束标志,也是字符串的主要特征


转义字符


转义字符,顾名思义就是转变原意的字符,比如我们常见的 \n 在转义字符中表示换行,常常用在printf 中,使打印出来的内容更加清晰;还有比如 \' 表示单个英文单引号 ' ,即我们在想打印 ' 时使用,避免自动与其他单引号组合造成错误;再比如 \xxx ,xxx表示1~3个八进制数字,在数字前加上 \ 后会被编译器当作八进制数字处理,譬如 \130 ,转换成十进制后表示88,对应ASCII码表就是X。


e12f751b652e78f0f37e1e4fe90c5dc.png


其实在C语言中有许多转义字符,下面就是转义字符汇总表:

因篇幅原因就不一一展示用法 。


c7acc8cd0ca045466f4acf0b9cd9382.png

注释


注释的存在就是屏蔽代码或解释代码,当我们需要在同一个文件中写入第二个主函数时就可以把前面的注释掉,或者把其他无用的代码注释掉;当我们在写一些比较难理解的代码时也可以加上注释,通过文字提示帮助我们理解代码。


C语言中有两种注释风格,一种是C语言的(/*  */),另一种是C++的( // )。因为C++的注释方法快捷高效,且C语言的注释风格不能嵌套注释,于是C语言就兼容了C++的注释风格,当然两者都可以使用,因地制宜才能发挥注释的最大价值。


关于注释:代码在编译过程中会将注释部分自动删除,因此注释丝毫不影响代码运行。


C语言的注释风格


28c7ba457dc2748a882282e7cd6965b.png


C++的注释风格



86db5cec1a0b375817203644a652186.png


关于注释的快捷键,Ctrl+K+C进行注释,Ctrl+K+U取消注释


目录
相关文章
|
C语言 C++
初始C语言——梦启程的地方
选择语句 if语句 if 单分支 if 多分支 循环语句 while 循环 函数 数组 操作符 关键字 typedef static #define定义常量和宏 结构体 总结
64 0
初始C语言——梦启程的地方
|
5天前
|
存储 Serverless C语言
【C语言基础考研向】11 gets函数与puts函数及str系列字符串操作函数
本文介绍了C语言中的`gets`和`puts`函数,`gets`用于从标准输入读取字符串直至换行符,并自动添加字符串结束标志`\0`。`puts`则用于向标准输出打印字符串并自动换行。此外,文章还详细讲解了`str`系列字符串操作函数,包括统计字符串长度的`strlen`、复制字符串的`strcpy`、比较字符串的`strcmp`以及拼接字符串的`strcat`。通过示例代码展示了这些函数的具体应用及注意事项。
|
8天前
|
存储 C语言
C语言程序设计核心详解 第十章:位运算和c语言文件操作详解_文件操作函数
本文详细介绍了C语言中的位运算和文件操作。位运算包括按位与、或、异或、取反、左移和右移等六种运算符及其复合赋值运算符,每种运算符的功能和应用场景都有具体说明。文件操作部分则涵盖了文件的概念、分类、文件类型指针、文件的打开与关闭、读写操作及当前读写位置的调整等内容,提供了丰富的示例帮助理解。通过对本文的学习,读者可以全面掌握C语言中的位运算和文件处理技术。
|
9天前
|
存储 C语言
C语言程序设计核心详解 第七章 函数和预编译命令
本章介绍C语言中的函数定义与使用,以及预编译命令。主要内容包括函数的定义格式、调用方式和示例分析。C程序结构分为`main()`单框架或多子函数框架。函数不能嵌套定义但可互相调用。变量具有类型、作用范围和存储类别三种属性,其中作用范围分为局部和全局。预编译命令包括文件包含和宏定义,宏定义分为无参和带参两种形式。此外,还介绍了变量的存储类别及其特点。通过实例详细解析了函数调用过程及宏定义的应用。
|
14天前
|
Linux C语言
C语言 多进程编程(三)信号处理方式和自定义处理函数
本文详细介绍了Linux系统中进程间通信的关键机制——信号。首先解释了信号作为一种异步通知机制的特点及其主要来源,接着列举了常见的信号类型及其定义。文章进一步探讨了信号的处理流程和Linux中处理信号的方式,包括忽略信号、捕捉信号以及执行默认操作。此外,通过具体示例演示了如何创建子进程并通过信号进行控制。最后,讲解了如何通过`signal`函数自定义信号处理函数,并提供了完整的示例代码,展示了父子进程之间通过信号进行通信的过程。
|
14天前
|
C语言
C语言 字符串操作函数
本文档详细介绍了多个常用的字符串操作函数,包括 `strlen`、`strcpy`、`strncpy`、`strcat`、`strncat`、`strcmp`、`strncpy`、`sprintf`、`itoa`、`strchr`、`strspn`、`strcspn`、`strstr` 和 `strtok`。每个函数均提供了语法说明、参数解释、返回值描述及示例代码。此外,还给出了部分函数的自实现版本,帮助读者深入理解其工作原理。通过这些函数,可以轻松地进行字符串长度计算、复制、连接、比较等操作。
|
15天前
|
SQL 关系型数据库 C语言
PostgreSQL SQL扩展 ---- C语言函数(三)
可以用C(或者与C兼容,比如C++)语言编写用户自定义函数(User-defined functions)。这些函数被编译到动态可加载目标文件(也称为共享库)中并被守护进程加载到服务中。“C语言函数”与“内部函数”的区别就在于动态加载这个特性,二者的实际编码约定本质上是相同的(因此,标准的内部函数库为用户自定义C语言函数提供了丰富的示例代码)
|
29天前
|
C语言
【C语言】字符串及其函数速览
【C语言】字符串及其函数速览
22 4
|
30天前
|
编译器 程序员 C语言
【C语言篇】从零带你全面了解函数(包括隐式声明等)(下篇)
⼀般情况下,企业中我们写代码时候,代码可能⽐较多,不会将所有的代码都放在⼀个⽂件中;我们往往会根据程序的功能,将代码拆分放在多个⽂件中。
|
1月前
|
测试技术 C语言
C语言中的void函数
C语言中的void函数