初始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定义常量和宏 结构体 总结
80 0
初始C语言——梦启程的地方
|
3月前
|
C语言 C++
C语言 之 内存函数
C语言 之 内存函数
44 3
|
1月前
|
存储 C语言 开发者
【C语言】字符串操作函数详解
这些字符串操作函数在C语言中提供了强大的功能,帮助开发者有效地处理字符串数据。通过对每个函数的详细讲解、示例代码和表格说明,可以更好地理解如何使用这些函数进行各种字符串操作。如果在实际编程中遇到特定的字符串处理需求,可以参考这些函数和示例,灵活运用。
67 10
|
1月前
|
存储 程序员 C语言
【C语言】文件操作函数详解
C语言提供了一组标准库函数来处理文件操作,这些函数定义在 `<stdio.h>` 头文件中。文件操作包括文件的打开、读写、关闭以及文件属性的查询等。以下是常用文件操作函数的详细讲解,包括函数原型、参数说明、返回值说明、示例代码和表格汇总。
52 9
|
1月前
|
存储 Unix Serverless
【C语言】常用函数汇总表
本文总结了C语言中常用的函数,涵盖输入/输出、字符串操作、内存管理、数学运算、时间处理、文件操作及布尔类型等多个方面。每类函数均以表格形式列出其功能和使用示例,便于快速查阅和学习。通过综合示例代码,展示了这些函数的实际应用,帮助读者更好地理解和掌握C语言的基本功能和标准库函数的使用方法。感谢阅读,希望对你有所帮助!
41 8
|
1月前
|
C语言 开发者
【C语言】数学函数详解
在C语言中,数学函数是由标准库 `math.h` 提供的。使用这些函数时,需要包含 `#include <math.h>` 头文件。以下是一些常用的数学函数的详细讲解,包括函数原型、参数说明、返回值说明以及示例代码和表格汇总。
50 6
|
1月前
|
存储 C语言
【C语言】输入/输出函数详解
在C语言中,输入/输出操作是通过标准库函数来实现的。这些函数分为两类:标准输入输出函数和文件输入输出函数。
271 6
|
1月前
|
存储 缓存 算法
【C语言】内存管理函数详细讲解
在C语言编程中,内存管理是至关重要的。动态内存分配函数允许程序在运行时请求和释放内存,这对于处理不确定大小的数据结构至关重要。以下是C语言内存管理函数的详细讲解,包括每个函数的功能、标准格式、示例代码、代码解释及其输出。
64 6
|
1月前
|
C语言 开发者
【C语言】断言函数 -《深入解析C语言调试利器 !》
断言(assert)是一种调试工具,用于在程序运行时检查某些条件是否成立。如果条件不成立,断言会触发错误,并通常会终止程序的执行。断言有助于在开发和测试阶段捕捉逻辑错误。
42 5
|
2月前
|
存储 人工智能 算法
数据结构实验之C 语言的函数数组指针结构体知识
本实验旨在复习C语言中的函数、数组、指针、结构体与共用体等核心概念,并通过具体编程任务加深理解。任务包括输出100以内所有素数、逆序排列一维数组、查找二维数组中的鞍点、利用指针输出二维数组元素,以及使用结构体和共用体处理教师与学生信息。每个任务不仅强化了基本语法的应用,还涉及到了算法逻辑的设计与优化。实验结果显示,学生能够有效掌握并运用这些知识完成指定任务。
61 4