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

相关推荐
SomeB1oody4 分钟前
【Rust自学】5.1. 定义并实例化struct
开发语言·后端·rust
云空25 分钟前
《解锁 Python 数据挖掘的奥秘》
开发语言·python·数据挖掘
青莳吖36 分钟前
Java通过Map实现与SQL中的group by相同的逻辑
java·开发语言·sql
Buleall43 分钟前
期末考学C
java·开发语言
重生之绝世牛码1 小时前
Java设计模式 —— 【结构型模式】外观模式详解
java·大数据·开发语言·设计模式·设计原则·外观模式
小蜗牛慢慢爬行1 小时前
有关异步场景的 10 大 Spring Boot 面试问题
java·开发语言·网络·spring boot·后端·spring·面试
荒古前1 小时前
龟兔赛跑 PTA
c语言·算法
Algorithm15761 小时前
云原生相关的 Go 语言工程师技术路线(含博客网址导航)
开发语言·云原生·golang
shinelord明1 小时前
【再谈设计模式】享元模式~对象共享的优化妙手
开发语言·数据结构·算法·设计模式·软件工程
Monly211 小时前
Java(若依):修改Tomcat的版本
java·开发语言·tomcat