目录

一.什么是C语言?

二.第一个C语言程序

三.数据类型

1.常见的数据类型

2.常见数据类型的大小

四.变量、常量

1.什么是c语言中的变量与常量

2.定义变量的方法

3.变量的命名

4.变量的分类

5.变量的使用

6.变量的作用域与生命周期

7.常量

(1)字面常量

(2)const修饰的常变量

(3)#define 定义的标识符常量

(4)枚举常量

五.字符串、转义字符、注释

1.字符串

2.转义字符

3.注释

结语


一.什么是C语言?

在学习C语言之前,我们需要知道什么是C语言。我的理解是C语言是众多计算机编程语言中的一种语言且广泛运用于底层开发的语言,而编程语言是人与机器(计算机)进行交流的语言,人通过C语言这个媒介(工具)来告诉计算机你来给我做一件什么样的事。

二.第一个C语言程序

在屏幕上输出“Hello World!”,代码如下:(注:所有字符(标点)均为英文)

#include //引用头文件的格式int main()//主函数,程序的入口,有且只能有一个{//程序读写开始printf("Hello World!");//打印函数,要使用需引用头文件——stdio.hreturn 0;//与返回类型 int相对应,有始有终,其实这里的return 0;也是程序结束的标志}//格式如下://int main()//{//......//语句需以;结尾//return 0;//这里的;和()只能是英文字符//}

三.数据类型

1.常见的数据类型

char 字符型short短整型int整型long 长整型long long更长的整型float单精度浮点型double 双精度浮点型

2.常见数据类型的大小

其实小编认为应该首先从这个数据类型的本质去理解,即xx类型数据所占的内存大小。

比如:char类型的数据占1个字节,也就是说它向内存申请了1个字节数据大小的空间,这个空间最多存储1个字节的数据。接下来我们使用sizeof操作符(计算数据所占内存的大小,单位是字节)在vs2022中来计算其他类型的数据所占内存的大小。

这里来介绍一下printf()格式化输出函数首先我们要知道要实现某个函数的功能,必须通过函数调用的方法来实现,调用printf函数显示3的过程如下:函数调用printf("%d", 3) 函数名称 实参实参printf函数的第一个实参"%d"指定了输出格式,即以十进制形式输出,通过调用printf函数显示出了3的值,也就是说3取代了%d这个占位符,%是引导符,d是十进制整数的形式。还有其他很多比如%c打印字符类型,%s打印字符串类型......感兴趣的可以自行查找同一个东西,以不同的形式打印,打印的结果就不一样注:printf("????");就是在屏幕上显示????,两个实参之间用,所以最终会在屏幕上输出3。

注:上面的\n为换行符,就是换行的意思。

可见在vs2022下,常见的数据类型大小如下:(单位为字节)

char1

short2

int4

long4

long long8

float4

double8

其实中文给它命名的时候是以它存储什么类型的数据这一特点来命名的,如char类型,用来存储字符数据,int型用来存储整数数据,float、double类型用来存储小数数据。当然,用一个int类型(4字节的空间)来存储一个char类型的数据(1字节的空间)也不会出错,只不过浪费一点点空间,但是用一个只有1字节空间的来存储占4个字节尽空间的数据就会导致溢出,就和800ml水倒入400ml的瓶子里,会有水溢出一样的道理,而这里的溢出叫数据溢出。

类型的用途就是来创建变量。

四.变量、常量

1.什么是c语言中的变量与常量

从字面来理解就是c语言中可变的量叫变量,不能改变(恒定为某个值)的量叫常量。

2.定义变量的方法

eg:

char a;定义了一个名字为a的字符型变量

int b; 定义了一个名字为b的整型变量

double c;定义了一个名字为c的双精度浮点型变量

注:变量的初始化是指在定义变量的同时给变量赋值,赋值用运算符=。

3.变量的命名

不难,这边建议查找资料搜索关键字:c语言中变量命名的规则

关于变量的命名这边建议尽量给变量命名为有意义的名字,如年龄——age

4.变量的分类

变量总体分为局部变量和全局变量

int main()

{

int a = 6;//这里的变量a定义在{}内,为局部变量

return 0;

}

int a = 6;//这里的变量a定义在{}外,为全局变量

int main()

{

return 0;

}

注:这里的全局变量和局部变量是相对于在{}内还是外定义的。当局部变量和全局变量的名字一样时,局部变量会被优先使用。eg:

5.变量的使用

这里来介绍一下scanf()格式化输出函数int a = 0;//初始化变量a的值为0scanf("%d", &a);//格式化打印,类比printf格式化输出函数这里的&是取地址符,这里先不讲用途,涉及到地址的内容,后续提到就懂了。先记住格式就好。这句话的意思就是从键盘输入一个值赋给a,eg:从键盘输入3,a在内存中存储的就是3.

先来简单的使用变量来实现一个加法功能

注:如若在编译失败,在错误列表中出现这个说明,可在代码的最上面加上#define _CRT_SECURE_NO_WARNINGS 1这样一段代码,这是因为vs编了一个scanf_s函数,它觉得你使用scanf函数不安全,如果要强行使用scanf则需在最开始添加这样一句话。当然你也可以使用vs提供的scanf_s(只局限在vs这个平台上)来代替scanf,这里建议添加这样一段代码,且这段代码必须加在#include 头文件之前。

6.变量的作用域与生命周期

变量的作用域是指变量在程序中有效的范围。在一个程序中,变量可能只在某个特定的代码段中可见,而在另一个代码段中不可见。其中,不同的代码段可能包括函数、代码块、类和模块等。局部变量的作用域是变量所在的局部范围;而全局变量的作用域是整个工程。别慌,举个例子你就懂了。eg:

在这两段代码中,当使用printf函数去输出a的值时,第一段代码可以输出a的值,说明a在{}在是可以被使用的;而在第二段代码中,使用printf函数去输出a的值时,编译器报错,说明a在{}外是不能被使用的,而在{}内能被使用的那部分范围就是变量a的作用域。同理,当创建一个全局变量时,它的作用域是整个工程,在这个工程里都是可以使用它的。

接下来我们再来探讨变量的生命周期。先看定义:变量的生命周期是指变量的创建到销毁的时间段局部变量的生命周期是进入作用域生命周期开始,出作用域生命周期结束;全局变量的生命周期是整个程序的生命周期。联系上面两个图是否一下就懂了第二段代码为啥跑不起来了呢?因为在{}内创建的变量a,出了{},变量a就被销毁了,所以用printf函数去使用它时,编译器不认识变量a,所以报错。

7.常量

(1)字面常量

就是写出的值,eg:1,5,1.999,’c’,’1’,”abc”。也就是一些写出的数字,字符,字符串等等。(c语言中的字符需用'” />(2)const修饰的常变量

我们都知道变量的值是可以通过赋值来改变它的值,但是在创建变量的时候用const修饰就会使这个变量具有常属性。eg:

当在创建变量的时候使用const修饰,变量则不能被重新赋值,也就是说,该变量的值不能发生改变。但是s本质上还是个变量。

(3)#define 定义的标识符常量

这个还是直接上例子吧,先大概的认识一下它的作用

在这段代码中,使用了#define My 666,也就是说当使用My(可以自建)这个标识符时,它就会被666代替输出,还可以int x = M,同理,把M替换成666,就是x的值是666。

(4)枚举常量

来简单认识一下即可,eg:

enum season枚举关键字+空格+枚举名字,这里来枚举季节,就是将季节的所有可能一一列举出来{spring,//枚举常量summer,//枚举常量autumn,//枚举常量winter//枚举常量};

接下来是使用:

这样我们就定义了一个用来表示季节的变量c。感兴趣的小伙伴可以试着一一打印枚举常量的默认值,会有不一样的发现。

五.字符串、转义字符、注释

1.字符串

c语言中有字符类型,却没有字符串类型。我猜测是字符类型就是固定占一个字节,而字符串的长度可更改,占的空间不确定,向内存申请空间的时候,说不清要申请几个字节(仅仅代表个人猜测)。回归正题,那什么叫字符串呢?eg:”abcd efg”,这样由一对双引号(英文)引起来的一串字符就叫做字符串。注:字符串的结束标志是一个 \0 的转义字符。计算字符串长度的时候 \0 是结束标志,不算作字符串内容。其实在“abcd efg”里面的最后隐藏了一个\0这样一个转义字符。

接下来在提一下strlen()函数,用来计算字符串长度的函数,统计的是\0之前的字符个数,具体用法如下:

第一个图因为字符串末尾隐藏了\0,所以输出4;而第二张图strlen函数在中途就碰到了\0就提前结束了,所以输出3。

2.转义字符

其实上面我们已悄悄学过一些转义字符,\n(换行),\0(结束标志),这些就是一些转义字符,通常这些转义字符就是它被赋予了特殊的作用(转义字符算一个字符,eg:\666,表示3个八进制数字。)。大家可以查找资料,授之以鱼不如授之以渔,这些在百度百科上也是很好找到的。关于转义字符这里提一个问题,感兴趣的小伙伴可以试试:试着在屏幕上输出xx文件的路径eg:printf(“D:\code\CSDN”);事实上由于转义字符的存在,在屏幕上得不到想到的结果。那么该怎么去消除这种歧义呢?这里提供一个方法:\\前一个转义字符把后一个转义字符的歧义消除掉,简单点说就是反转义;上述代码可改为printf(“D:\\code\\CSDN”)。同样试试打印”和’,”‘”这样是对的吗?还有这样”’。这里再抛出一个问题:计算机中只能存储二进制编码,那么字符是怎么存储到计算机当中的呢?——对字符进行编码,可以查找ASCII码表。

eg:65(A的ASCII码值)转化为二进制序列,计算机就能读取了,然后指定了打印格式为%c字符,所以输出A。

3.注释

c语言里可以用//…..来注释掉后面的内容,也就是说程序并不会去识别它,还有/*……*/一对/*把要注释的内容包起来。那么c语言为啥要有注释呢?试想一下,别人写了一堆代码,比如几百行,你还能看得下去不?这时如果那个人给每个重要的部分添加了注释,是不是就方便知道它写的代码是在干嘛。初学者建议多写注释,以此来检测自己写的这行代码是要计算机做什么,既提升了自己写代码的能力,又方便他人查阅。eg:

个人认为好的习惯才是学任何事的一个重要部分。不仅要有自己的风格,更重要的是有一个良好的、适合自己的代码风格。

结语

快速入门c语言需要从开始就养成良好的习惯,能为将来进一步学习c语言甚至学习其他编程打下坚实的基础。祝大家在学习c语言的过程中,节节高升!以上文章有许多不足,还请大佬多多指正,再此感谢!当然,觉得小编写的不错的话可以给个关注,多多支持哦。