C语言初识(一)

目录

前言

一、什么是C语言?

二、第一个C语言程序

(1)创建新项目

(2)编写代码

(3)main函数

三、数据类型

四、变量、常量

(1)变量的命名

(2)变量的分类

(3)变量的使用

[(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这个文件中加上上面这个代码,以后新建的文件就会自动加上上述代码。就不会出现安全问题了。

相关推荐
潘潘潘潘潘潘潘潘潘潘潘潘11 分钟前
【C++】类和对象(下)
c语言·开发语言·c++·学习方法
写bug如流水21 分钟前
【Python】Python闭包的妙用与注意事项
开发语言·python·spring
做人不要太理性37 分钟前
C++:模拟实现string
开发语言·c++
Mr_Xuhhh37 分钟前
vector
c语言·开发语言·数据结构·算法·链表·visualstudio
鸽芷咕38 分钟前
【C++报错已解决】std::ios_base::floatfield
开发语言·c++·ios
eSIM物联工厂1 小时前
物联网系统中OLED屏主流驱动方案详解
c语言·arm开发·嵌入式硬件·物联网·硬件工程·开源软件·iot
MavenTalk1 小时前
经典Python应用库一览
开发语言·python·pycharm·requests
遥逖1 小时前
Linux上的C/C++编程
linux·c语言·c++
旺旺碎冰冰、1 小时前
Java之多态
java·开发语言
嵌入式AI的盲1 小时前
c primer plus---例程程序纠正
c语言·开发语言