C语言基础(初识C语言)
学习是一条无止境的路,如果选择了它,就要坚持不懈的走下去。在学习c语言的路上,总会有一些不可避免的难题,要学会适当调整心态。只要肯学,就不存在学不会。
本章目标:
基本了解c语言的基础知识,对c语言有一个大概的认识。
基础知识不需要过度学习,简单认识即可。
一、什么是C语言。
C 语言是一门通用 计算机编程语言 ,广泛应用于底层开发。 C 语言的设计目标是提供一种能以简易的方式 编译 、处理低级 存储器 、产生少量的 机器码 以及不需要任何运行环境支持便能运行的编程语言。
尽管C 语言提供了许多低级处理的功能,但仍然保持着良好跨平台的特性,以一个标准规格写出的 C语言程序可在许多电脑平台上进行编译,甚至包含一些嵌入式 处理器 (单片机或称 MCU )以及超级电脑等作业平台。
二十世纪八十年代,为了避免各开发厂商用的C 语言语法产生差异,由 美国国家标准局 为 C 语言制 定了一套完整的美国国家标准语法,称为 ANSI C ,作为 C 语言最初的标准。 [1] 目前 2011 年 12 月 8 日,国际标准化组织(ISO )和国际电工委员会( IEC )发布的 C11 标准 是 C 语言的第三个官方标准,也是C 语言的最新标准,该标准更好的支持了汉字函数名和汉字标识符,一定程度上实现了汉字编程。
C语言是一门面向过程的计算机编程语言,与 C++ , Java 等面向对象的编程语言有所不同。
其编译器主要有 Clang 、 GCC 、 WIN-TC 、 SUBLIME 、 MSVC 、 Turbo C 等。
二、C语言编程代码的基本格式。
#include <stdio.h>
int main()
{
printf("你好!世界!\n");
printf("hello!world!\n");
return 0;
}
运行结果如下所示:
你好!世界!
hello!world!
这里的\n是表示换行操作符,如果不加不会报错,但运行结果会如下所示:
你好!世界!hello!world!
这里要注意,直接打印中文可能会出现乱码。原因是文件编码使用了utf-8的编码。而c语言使用的是gbk的格式。
这里提供一种解决方法:
使用记事本打开该文件,另存为==>将编码格式从utf-8变为ANSI即可。点击确定覆盖即可解决问题。
基本格式浅解:
2.1 #include <stdio.h>:
include在英语中是“包含”的意思,std是英语“标准化”(standardizing)的英文缩写,而io是输入输出的意思,h是头的意思。
所以“include <stdio.h>”的翻译是“包含标准化输入输出的头文件”。
而在计算机看来“#”代表C预处理器(我也不知道这什么东西)在编译器接手之前处理这条指令。“include”是C预处理器指令:编译器编译前对源代码做一些准备工作。
<stdio.h>:它是一个文件,提供键盘输入与屏幕输出的支持,例如常用的“Printf”。
2.2 int main():
“int main(void)”是一个函数头。int是整型,void是用来返回空信息。main()是一个函数,C语言的程序代码中必须是有main(),且它是唯一的。函数圆括号“()”是用来识别函数的。
对于初学C语言来说,括号“()”内可不写或写“void”。int main()函数是会返回一个整数。main是C语言的开头,当程序运行到main()这一行时,控制权会交给main,运行main函数内的代码(也就是花括号{}的内容)。
2.3函数体:
当运行到printf这一行时,主调函数main()会把控制器给予给函数printf
printf函数运行完后,会把控制权返回给主调函数main()
“return 0;”可以理解为程序的正常退出,毕竟有了开始(main())那自然要有个结尾。
三、数据类型。
数据类型是编程最基本也是最常用到的一块区域。
常用类型:
char | 字符数据类型 |
---|---|
short | 短整型 |
int | 整形 |
long | 长整型 |
long long | 更长的整形 |
float | 单精度浮点数 |
double | 双精度浮点数 |
---- | ---- |
注:每一种类型的空间大小不同
这里我们可以使用sizeof()来验证各类型大小。
#include <stdio.h>
int main()
{
printf("%d\n", sizeof(char));
printf("%d\n", sizeof(short));
printf("%d\n", sizeof(int));
printf("%d\n", sizeof(long));
printf("%d\n", sizeof(long long));
printf("%d\n", sizeof(float));
printf("%d\n", sizeof(double));
printf("%d\n", sizeof(long double));
return 0;
}
代码中%d打印的是整型,sizeof()用于打印数据类型的大小。
运行结果如下:
1
2
4
4
8
4
8
8
其中数字大小表示各种数据类型的空间大小,单位为字节,有byte、kb、mb、gb、tb、pb,它们的换算关系为1GB=1024MB 1MB=1024KB 1KB=1024byte。而1字节=8个比特位,比特位是计算机存储数据的最小单位。
四、常量变量。
常量: 不变的值, C 语言中用 常量 的概念来表示,在生活中的有些值是不变的(比如:圆周率,性别,血型,物质本身材质等等)。
变量: 变的值, C 语言中用 变量 来表示(比如:年龄,体重,身高,面貌,工资)。
4.1 定义变量的方法
int age = 15;//年龄
float weight = 45.5f;//身高
char ch = 'w';//字符
首先申明变量类型,然后起一个变量名称(比如身高(weight)、年龄(age)等等),用 = 进行赋值,将值放在等号后面,并习惯性的打上分号。
4.2 变量的分类
全局变量:定义在int main()以外,对整个代码有效
局部变量:定义在某一个范围内用{ }括起来的区域,当出了该范围则无效,如果全局变量和局部变量一起存在,则局部变量优先。
图例:
#include <stdio.h>
int b = 2020; //全局变量
int main()
{
int b = 2021; //局部变量
int c = 2022; //局部变量
printf("b = %d\n", b);
return 0;
}
打印结果为
b = 2021
4.3 变量的使用
我们以计算两个数字的和为例
#include <stdio.h>
int main()
{
int num1 = 0;
int num2 = 0;
int sum = 0;
printf("输入两个数:>");
scanf("%d %d", &num1, &num2);
sum = num1 + num2;
printf("sum = %d\n", sum);
return 0;
}
运行结果如下
输入两个数:>
代码中先定义需要输入的两个数字整型int num1=0;int num 2=0;其中赋一个初始值0,在定义一个变量来存放需要输出的值int sum=0;均放上初始值0;先输出一个提示语输入两个操作数:>用scanf(“%d %d”,&num1,&num2)来寻找变量num1和num2的地址,达到对变量随时赋值的目的,sum=num1+num2定义算法,即求两个数的和,并将结果用变量sum来承接,最后用printf来输出sum的值。
4.4 变量的作用域和生命周期
1.作用域: 是程序设计概念,通常来说,一段程序代码中所用到的名字并不总是有效,可用
的,而限定这个名字的可用性的代码范围就是这个名字的作用域。
(1). 局部变量的作用域是变量所在的局部范围。
(2). 全局变量的作用域是整个工程。
2.生命周期: 变量的生命周期指的是变量的创建到变量的销毁之间的一个时间段
(1). 局部变量的生命周期是:进入作用域生命周期开始,出作用域生命周期结束。
(2). 全局变量的生命周期是:整个程序的生命周期。
4.5 常量
C语言中的常量和变量的定义的形式有所差异
1.字面常量:即已知的值
2.const 修饰的常变量:对所赋值的变量有固定作用,后续不能改变
#include <stdio.h>
int main()
{
const int num = 4;
printf("%d\n", num);
int sum = 8;//此处对num再赋值已经无效了
printf("%d\n", num);
return 0;
};
运行结果如下
4
4
其中const修饰的常变量,对赋值的sum有固定作用,后面再对num赋值则无效,虽然对num固定赋值了,但num的本质任然是变量,只是具有了常量的性质,验证如下:
#include <stdio.h>
int main()
{
const int n = 10;
int arr[n] = { 0 };//数组[]中需要的是一个常量,虽然const修饰的n有常属性,但是他的本质是一个变量所以有错误
return 0;
}
运行结果如下
3.#define 定义的标识符常量 :定义的标识符不占内存,只是一个临时的符号,预编译后这个符号就不存在了。例如:对MAX的赋值,在main函数外定义。
#include <stdio.h>
#define MAX 10
int main()
{
int arr[MAX]={0};
printf(" %d\n", MAX);
return 0;
}
4.枚举常量:需要一一列举出来,需要用到枚举关键字enum,放在枚举里边的叫枚举常量
#include<stdio.h>
enum people
{
KID,
MAN,
WOMAN,
}; //其中KID,MAN,WOMAN,叫做枚举常量
int main()
{
printf("%d\n", KID);
printf("%d\n", MAN);
printf("%d\n", WOMAN);
return 0;
}
运行结果如下
0
1
2
五、字符串 and 转义字符
字符串:就是用双引号引起来的一串字符。
转义字符:转义字符是以“\”为开头的字符,后面跟一个或几个字符,其意思是将反斜杠“\”后面的字符转变成为另外的意思。
有需要的朋友可以自己尝试,这里列举一种,其他的格式都大同小异。
例子:转义字符\?:(注意)在书写连续多个问号时使用,防止他们被解析成三字母词,三字母词存在于老一版的编译器中。
#include<stdio.h>
int main()
{
printf("(你在干嘛\?\?)\n");// \?在书写连续多个问号时使用,防止他们被解析成三字母词
return 0;
}
打印结果如下
你在干嘛??
六、注释
-
代码中有不需要的代码可以直接删除,也可以注释掉
2. 代码中有些代码比较难懂,可以加一下注释文字 注释有两种风格: 1.C语言风格的注释 /*xxxxxx*/ 可惜的是不能嵌套注释 2.C++风格的注释 //xxxxxxxx 可以注释一行也可以注释多行
这些是c语言中的最基础也是最易懂的部分,理解这些之后,就可以开始学习选择语句,循环语句,函数,数组,操作符等等。这些我们将在下一期文章中讲到。
这里,小编预祝各位不论是学哪种语言,都能够学有所成!学习之路一帆风顺。早日实现自己的梦想。