目录
[(4)_CRT _SECURE_NO_WARNINGS问题](#(4)_CRT _SECURE_NO_WARNINGS问题)
前言
C语言是万物之母,C生万物,但大家要不只只学会C语言,还要学习学好计算机语言,算法,数据结构,操作系统,计算机网络,项目实战,数据库MySQL等等。
但是根据我的总结,C语言基础打好后,其它的都很好理解,很好学习和读懂,有助于后来专业领域的学习。
一般我写C语言是用的VSstdio2022(个人感觉非常好使),大家可以用其它编辑器,选择自己喜欢的来编写代码真的很高效。
学习闲暇时间用一些网站来刷题,例如牛客网,洛谷,pta,leetcode等等。
本篇文章来介绍C语言的各个知识,不做深入了解,后续文章深入了解每个知识点,如果学过的也可以大致看看,看看自己C语言有没有漏洞,经常反思才会有所进步。
一、什么是C语言?
C语言是一门通用的计算机编程语言(人和计算机进行交流的语言,例如:C C++,JAVA,Python,go等等),现在已经有上千种语言,C语言只不过是其中的一种语言,广泛(善于)用于底层开发(例如操作系统可以使电脑(硬件)工作,而在他们之间还有一个驱动,实际就是操作系统调用驱动来使电脑工作,操作系统上可以装很多软件,操作系统以上一般叫做上层软件开发,以下也就是下层或者底层开发,也就是操作系统及以下,linux就是用C语言写的,早起的QQ也是用C语言写的,驱动也是用C语言写的)。C语言的设计目标就是提供一种能以简易的方式编译、处理低级存储器、产生少量机器码以及不需要任何运行环境支持便能运行的编程语言。
尽管C语言提供了许多低级处理的功能,但仍然保持着良好的跨平台的特性,以一个标准写出的C语言可在许多电脑平台上进行编译,甚至包含一些嵌入式处理器(单片机或称MCU)以及超级电脑等作业平台。
二十世纪八十年代,为了避免各开发商用的C语言语法产生差异,有美国国家标准局为C语言制定了一套完整的美国国家标准语法,称为ANSI C,作为C语言最初的标准。目前2011年12月8日,国际标准化组织(ISO)和国际电工委员会(IEC)发布的C11标准是C语言的第三个官方标准,也是C语言的最新标准,该标准更好的支持了汉字函数名和汉字标识符,一定程度上实现了汉字编程。
早期计算机能够识别的是二进制,也就是1和0,如果用二进制来写的话,自己肯能会眼花缭乱,以前都要查手册来写二进制功能,后来也就出来了助记符(汇编语言),例如100001对应ADD等,后来人们对于汇编语言也有些吃力和不满意,于是演化出了B语言,又演化出了C语言,就出现了越来越多的计算机语言。这些语言都叫做高级语言,而二进制和汇编语言叫做低级语言。
不同厂商推出了不同的C语言版本,所以国际标准出现了,C89,C90,C99,C11......最常用的还是C89 C90,虽然没有固定标准,但一般将C99之后的C语言标准称为"现代C语言";目前的最新标准为C23,只有国际标准的语言才值得去学习;
C语言是一门面向过程的计算机编程语言,与C++,Java等面向对象的编程语言有所不同,其编辑器主要有Clang(苹果公司开发),GCC(Linux),WIN-TC(用的较少),SUBLIME(可以配置编辑器编译C,但不推荐),MSVC(VS用的编辑器,VS底层就是),Tuebo C等。
二、第一个C语言程序
(1)创建新项目
1.首先创建一个项目
例如我用的是VS2022(也可以用VS2019):
打开后左边这些是之前写过的文件,第一次打开左边是什么都没有的,我们选择创建新项目。
之后选到C++,选择空项目,进入配置页面。
这里可以命名项目的名称,这里写一个有意义有价值的名字,尽量不要写中文,因为他对中文的兼容性不是很好,这样将来才会知道自己写的是什么,以及项目的存储地址,完成后点击创建,一个新的空项目就创立了出来。
创建出来的页面是这样的:
如果没有左边的框,点击视图,选择里面的解决方案资源管理器,就出现了。
之后创建源文件,在写C语言代码的时候把代码放在文件中,.h后缀叫做头文件,.c后缀叫源文件,右击源文件,选择添加文件,选择.cpp文件,然后起一个比较有价值的名字,如果是C程序,后缀写.c,如果是c++,后缀写.cpp.
(2)编写代码
cpp
#include<stdio.h>//库文件
int main() //主函数
{
printf("hello world\n");
return 0;
}
写完后按Ctrl+F5就可以编译代码,按F10就可以分步骤运行(而且从主函数的第一行开始执行),产生结果,主函数是程序的入口,一个C语言代码中必须要有主函数,新手还是要自己打一遍,加深印象。
(3)main函数
但一个工程(项目)中可以有多个.c文件,多个.c文件中只能有一个main函数,让一个主函数统领一个工程就行
include 是包含的意思
int 整形 整数
printf 打印函数 ,专门用来在屏幕上打印数据的 ,是C语言标准库中提供的一个库函数。
在使用这个库函数的时候要包含stdio.h头文件,std-standard叫标准 i-input o-output ,其实叫做标准输入输出头文件。如果想使用这样的函数,就要包含头文件,没有可以不写。
cpp
#include <stdio.h>
void main()
{
printf("xxx");
}
上边的是老式的写法
cpp
#include <stdio.h>
int main(void)
{
printf("XXX");
return 0;
}
这里面的void,就相当于没放一样,这里main函数不需要参数
cpp
int main(int argc,char argv[])
{
return 0;
}
这里指main函数有两个参数,这两个参数是有特殊意义的,如果此时此时可不需要这些参数,可以不写,但写了不用这些参数也可以。
三、数据类型
|-----------|--------|
| char | 字符数据类型 |
| short | 短整型 |
| int | 整形 |
| long | 长整型 |
| long long | 更长整形 |
| float | 单精度浮点数 |
| double | 双精度浮点数 |
前五个都是属于Int整形范畴,后两个是浮点数(小数),因为小数可以用科学计数法来表示,所以在C语言里叫做浮点数。
cpp
#include <stdio.h>
int main()
{
printf("%d\n",sizeof(char)); //1
printf("%d\n",sizeof(short)); //2
printf("%d\n",sizeof(int)); //4
printf("%d\n",sizeof(long)); //4
printf("%d\n",sizeof(long long)); //8
printf("%d\n",sizeof(float)); //4
printf("%d\n",sizeof(double)); //8
return 0;
}
这里计算出各个类型占了多少空间,运行出来分别对应注释部分,单位为字节,计算机常见单位:bit-比特位,byte-字节,kb,mb,gb,tb,pb。
1 byte = 8bit
1KB = 1024 byte
1MB = 1024 KB
1GB = 1024MB
1TB = 1024MB
1PB = 1024TB
每一个类型都有对应着一个范围,可以利用类型的大小来节省存储空间。
cpp
由类型创建变量
char ch='w';
printf("%c\n",ch);
float weight = 75.5f;//编译器自动识别他是个浮点数类型
double pai=3.14;
四、变量、常量
生活中有些值是不变的(比如:圆周率,年龄,身份证,血型等等),可变的(身高,体重等等),不变的就用常量,变得就是变量。
cpp
//创建变量
int age = 18;
double salary =2000.0;//不加f,默认认为是doubke类型,加了默认认为浮点数
int m; //不是好的习惯,好的习惯是创建变量后给定一个初始值
(1)变量的命名
变量的命名也要有规定,只能是字母(包括大写小写)下划线数字组成 ,不能以数字开头,长度不能超过63个字符,变量名中区分大小写的,变量名中不能使用关键字,在命名时尽量使用一些有意义的名字,例如英文单词,这样更加规范,而且不易混乱,自己写的什么自己知道,别人也知道,大大增加了可读性。
(2)变量的分类
*局部变量
*全局变量
一般来说,大括号外面是全局变量,括号内部是局部变量。不管全局变量放到那里,放到前面还是后边都不耽误他是全局变量。
cpp
int a = 10;//全局变量
int main ()
{
int b =20;//局部变量
return 0;
}
当全局变量和 局部变量名字冲突时候,局部变量优先,建议大家尽量不要冲突,不是一个好的习惯。
(3)变量的使用
什么时候使用,什么时候创建变量,如果写一个代码计算两个数的和
scanf是一个库函数,可以从键盘接收数据
& 取地址符号
cpp
#include <stdio.h>
int main()
{
int num1=0;
int num2=0;
int sum=0;
scanf("%d%d",&num1,&num2);
sum=num1+num2;
printf("sum= %d \n",sum);
return 0;
}
输入一个数,空格,再输入一个数,就分别为sum1和sum2赋值,之后相加。
(4)_CRT _SECURE_NO_WARNINGS问题
其中可能会有错误,出现一大堆英文,这是因为scanf导致的其中大致的意思就是不安全,_CRT _SECURE_NO_WARNINGS,我们可以用直接将scanf替代成scanf_s来解决,因为scanf_s只是在VS中使用有用,在其它的编辑器里还是scanf,所以不建议使用scanf_s,怕养成习惯改不过来,另一种解决办法就是推荐的一种。
scanf,strcpy,strcat这些函数VS都会提示不安全
在文件前面定义上这一句话,就可以避免出错。
cpp
#define _CRT_SECURE_NO_WARNINGS 1
为了以后不用写这句话,可以在newc+file.cpp这个文件中加上上面这个代码,以后新建的文件就会自动加上上述代码。就不会出现安全问题了。