认识C语言
首先,来看C语言之前,我们先来讨论一下“语言”
什么是语言?
(语言是人类用嘴说出来的话,它由语音、语汇和语法所组成,它跟思想有密切关系,是表达情意、传递思想的重要工具,是人类区别于其他动物的本质特征。)
从官方解释来看,语言其本质来说就是沟通的工具。
人和人之间的语言:汉语、英语、法语、日语 西班牙语...
那人和机器之间又怎么沟通呢?
于是演变出了计算机语言:C/C++/Java/Python/go等上百种语言
那什么又是C语言呢?
C语言是一门通用计算机编程语言 ,广泛应用于底层开发。C语言的设计目标是提供一种能以简易的方式编译、处理低级储存器、产生少量机器码以及不需任何运行环境支持便能运行的编程语言。
计算机语言的发展
C语言是母体语言,是人机交互接近底层的桥梁。学习C有助于更好的理解C++,Java,C#,Perl以及其他基于C的特性的语言。
第一开始就学习其他语言的程序员往往不能很好的掌握继承自C语言的基本特性。
同时近50年间,在TIOBE排行榜中,C/C++位置长期霸占前三名,没有丝毫撼动,可谓经典永不过时!
第一个C语言程序
编译器的基本使用
C语言的实现需要编译器,这里以VS2019(集成开发环境(IDE))为示例
实现一个C语言代码的步骤:
(1)在编辑器中创建一个项目
(2)在项目中创建xxx.c文件
当创建好项目,进入界面,找到解决方案资源管理器
然后鼠标右键点击源文件,在子菜单中鼠标移动到添加,在下一级菜单中点击新建项
注意:如果你的界面中未出现解决方案资源管理器,可从界面上方工具栏中的视图中找到
当你添加新建项后,会进入下图界面,先点击C++文件,随后将名称改为.c为后缀的文件,最后点击添加
(3)编写代码并运行
这就是你创建好的C语言源文件,点开你的文件进行代码编写即可
当你编写好代码后,在工具栏中的调试中点击开始执行或开始调试(也可使用命令后对应的快捷键进行操作),即可使代码开始运行
数据类型
在我们使用C语言编写代码时,,总离不开去定义一些变量,那这些数据在计算机内存中又是怎么存储的呢?又是以什么方式进行存储?接下来我就介绍一些基础的数据类型
C语言的数据类型基本有以下几种:
char //字符数据类型
short //短整型
int //整形
long //长整型
long long //更长的整型
float //单精度浮点数
double //双精度浮点数
不知你有没有想过为什么会创建这么多的数据类型呢?设置一种数据类型不就行了吗?何必自取其扰呢?
其实设置这么多数据类型都是有他的缘由的,为回答这个问题,我们还是先看一下每种类型所创建的空间在内存中所占的大小。
#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));
return 0;
}
从运行结果来看,每种类型在内存中所占大小是不同的,所以给每一个变量用一个合适的数据类型进行修饰,可以更高效地利用内存空间,节省内存。在我们早期的计算机中,存储空间很小,内存是很珍贵的,能省则省,所以我们才要给数据分配合适的存储空间进行使用。
但是我们这里代码运行的结果所呈现出来的数字又是什么意思呢?它的单位又是什么呢?为了解答这个问题,就不得不先解释一下数据在内存中是如何存储的了。在这里先告诉大家这里的单位是字节(byte)
计算机中,最小的单位是比特位(bit),再往上就是字节(byte),生活中常见的有kb、mb、gb、tb、pb。
众所周知,计算机是一个硬件,需要通电,分为正电和负电,正好对应1/0二进制位,所以,我们计算机存储和处理的就是二进制,那么一个二进制位(也就是0/1)就被储存一个bit的空间里
1个字节由8个比特位(bit)组成,01001001就代表一个字节
下图是一个整型数据存储的流程
数据类型的使用
//数据类型 变量名 = 初始值
char ch = 'Q'
int age = 19
float stature = 1.77f
以上述代码第一个char类型举例,它的意思代表的是:向计算机 用char字符数据类型 申请一块1个字节的存储空间,并为该空间取名为ch,并在该空间内存储‘Q’。
另外注意:.C语言规定,sizeof(long)>=sizeof(int),所以我们经常见到sizeof(long)为4或者8(建议一般情况下尽量不使用long)
变量、常量
变量命名
1.只能由字母(包括大写和小写)、数字和下划线(_)组成
2.不能以数字开头
3.长度不能超过63个字符
4.变量名中区分大小写
5.变量命中不能使用关键字
变量的分类
局部变量
局部变量也称为内部变量。局部变量是在函数内作定义说明的。其作用域仅限于函数内, 离开该函数后再使用这种变量是非法的。
全局变量
全局变量也称为外部变量,它是在函数外部定义的变量。 它不属于哪一个函数,它属于一个源程序文件。其作用域是整个源程序。在函数中使用全局变量,一般应作全局变量说明。 只有在函数内经过说明的全局变量才能使用。全局变量的说明符为 extern。 但在一个函数之前定义的全局变量,在该函数内使用可不再加以说明。
//示例
#include <stdio.h>
int a = 100;//全局变量
int main()
{
int b = 10;//局部变量
return 0;
}
但如果出现以下情况,局部变量名和全局变量名冲突时,程序又怎么运行呢?两个变量的设置又有没有问题呢?
#include <stdio.h>
int a = 100;//全局变量
int main()
{
int a = 10;//局部变量
printf("%d\n", a);
return 0;
}
运行结果
从运行结果来看,程序顺利执行,说明变量设置没有问题,但是是局部变量被执行了
总结:当局部变量和全局变量同名时,局部变量优先使用(戏称:就近原则)
变量的作用域和生命周期
作用域
作用域(scope),程序设计概念,通常来说,一段程序代码中所用到的名字并不总是有效/可用的,而限定这个名字的可用性的代码范围就是这个名字的作用域。
1.局部变量的作用域是变量所在的局部范围
2.全局变量的作用域是整个工程
生命周期
变量的生命周期指的是变量的创建到变量的销毁之间的一个时间段
1.局部变量的生命周期是:进入作用域生命周期开始,出作用域生命周期结束
2.全局变量的生命周期是:整个程序的生命周期
常量
C语言中的常量和变量的定义的形式有所差异
C语言中的常量分为以下几种:
字面常量
const修饰的常变量
#define定义的标识符常量
枚举常量
#include <stdio.h>
//举例
enum Sex
{
MALE,
FEMALE,
SECRET
};
//括号中的MALE,FEMALE,SECRET是枚举常量
int main()
{
//字面常量演示
3.14;//字面常量
1000;//字面常量
//const修饰的常变量
const float pai = 3.14f;//这里的pai是const修饰的常变量
pai = 5.14;//pai是不能直接修改的!
//#define的标识符常量演示
#define MAX 100
printf("MAX = %d\n", MAX);
//枚举常量演示
printf("%d\n", MALE);
printf("%d\n", FEMALE);
printf("%d\n", SECRET);
//注意:枚举常量的默认是从0开始,依次向下递增1
return 0;
}
注:
上面例子中的pai被称为const修饰的常变量,const修饰的常变量在C语言中只是在语法层面限制了变量pai不能被改变,但是pai本质上还是变量,所以叫常变量
字符串
"hello word.\n"
这种由双引号(Double Quote)引起来的一串字符成为字符串字面值(String Literal),或者简称字符串
注:字符串的结束标志是'\0'的转义字符
在计算字符串长度的时候'\0'是结束标志,不算作字符串内容
#include <stdio.h>
//下面代码,打印结果是什么?为什么?(突出'\0'的重要性)
int main()
{
char arr1[] = "bit";
char arr2[] = {'b', 'i', 't'};
char arr3[] = {'b', 'i', 't', '\0'};
printf("%s\n", arr1);
printf("%s\n", arr2);
printf("%s\n", arr3);
return 0;
}
转义字符
如果我们在屏幕上要打印一个目录
c:\code\test.c
你可能写下的代码是这样的
#include <stdio.h>
int main()
{
printf("c:\code\test.c\n");
return 0;
}
但运行结果却是这样的
为什么会出现这种结果呢,这里就需要提及一下转义字符
转义字符顾名思义就是转变意思
下面举例一些转义字符:
转义字符 | 释义 |
---|---|
\? | 在书写连续多个问号时使用,防止他们被解析成三字母词 |
\' | 用于表示字符常量' |
\“ | 用于表示一个字符串内部的双引号 |
\\ | 用于表示一个反斜杠,防止它被解释为一个转义序列符 |
\a | 警告字符,蜂鸣 |
\b | 退格符 |
\f | 进制符 |
\n | 换行 |
\r | 回车 |
\t | 水平制表符 |
\v | 垂直制表符 |
\ddd | ddd表示1~3个八进制的数字。 如: \130 X |
\xdd | dd表示2个十六进制数字。 如: \x30 0 |
本篇只是大致介绍一下C语言的基础内容,其他比如if语句,for循环语句,函数等知识会在后面文章中一一提及。感兴趣的的小伙伴点点赞,点点关注,谢谢大家的阅读哦!!!
点点关注,后期不错过哦。😘
你们的鼓励就是我的动力,下一篇将会对分支、循环语句进行详细的讲解,欢迎下次继续阅读!!!😘😘😘