初始C语言(一)

前言

初始C语言总共分为3篇,目的在于帮助初学者能够基本了解C语言基础知识,对C语言有个大概认识。每个知识点就是简单介绍一下或介绍部分,在此不做详细介绍。

一、什么是C语言

C语言是一门通用的计算机汇编语言,广泛运用于地层开发。C语言的设计目的是提供一种能以简易的方式编译、处理低级存储器、产生少量的机器码以及不需要任何运行环境支持便能运行的汇编语言。由于C语言融合了计算机科学理论和实践的控制特性,且具有高效性可移植性,强大而灵活,面向程序员等优点而流行。
二十世纪八十年代,为了避免各开发厂商使用C语言语法产生误差,美国国家标准局为C语言制定了一套完整的美国国家标准语法,称为ANSI C,作为C语言最初的标准。目前2011年12月8日,国际标准化组织(ISO)和国际电工委员会(IEC)发布的C11标准是C语言的第三个标准,也是C语言最新标准,该标准更好的支持了汉字函数名和汉字标识符,一定程度上实现了汉字编程。

二、第一个C语言程序

介绍完什么是C语言,接下来我们来看看第一个C语言程序

#include <stdio.h>
int main()
{
    
    
	//printf("hello\n");
	return 0;
}

上面就是一个最简单C语言程序,除去//这行内容之外就是C语言的一个基本框架,但需要注意的是C语言规定main函数程序的入口一个工程中main函数有且仅有一个。除此之外读者有时还会看见以下三种C语言框架。

//这种语法读者可能在学校见的比较多,但由于这种写法是非常古老的,不推荐读者这样写。
void main()
{
    
    

}

//这种写法也有
int main(void) //void在这里表示main函数不接受任何参数
{
    
    
	return 0;
}

//这种写法对初学者不要求,以后在研究
int main(int argc, char* argv[])
{
    
    

	return 0;
}

三、数据类型

初学者可能已经见过以下数据类型了,但读者可能会有疑惑为什么出现这么多类型?每一种类型大小是多少?

char // 字符数据类型
short //短整型
int //整形
long //长整形
long long //更长整形
float//单精度浮点数
double//双精度浮点数

多种数据类型其目的在于节约内存空间。每一个数据类型的创建都会向内存申请相应的内存空间,但由于有时我们在存储一个很小的数时,试想我们如果用一个数据类型向内存申请了很大的一块空间,是不是意味着我们将浪费很大一块空间?所以C语言创建的不同大小的数据类型,以满足不同的实际需求,将多余的空间释放出来,从而达到节约内存空间的目的。
由于篇幅有限,每种类型大小代码计算过程将不给出,读者只需要记住它们的大小分别为(1、2、4、4、8、4、8字节,但需要注意的是C语言只规定了long的长度不小于int,所以如果读者的电脑是在x64环境下int为8字节

四、常量和变量

生活中有些值是不变的(比如:性别、血型等),有些值是可变的(比如:年龄、体重等)。不变的值,C语言中用常量来表示;变得值用变量来表示。
接下来我们先介绍变量。

4.1 定义变量的方法

char ch = 'a';
int age = 20;
int weight = 120;

上面已经给出了三个变量的定义,是不是很简单?我们只需要**数据类型+变量名(+初始值)**即可。

4.2 变量的命名

C语言对变量的命名做了以下严格规定

  • 只能由字母(包括大写和小写)、数字和下划线(_)组成。
  • 不能以数字开头
  • 长度不能超过63个字符
  • 变量名区分大小写
  • 变量名不能使用关键字

4.3变量的分类

C语言中变量可以分为局部变量全局变量
初始者只需要了解在{}外面的是全局变量,而在{}内创建的变量为局部变量。
(实际情况并非如此,这里仅是针对初学者和第一个C语言程序,具体情况在此不做详细介绍)
接下来读者可以在自己的编译器上运行一下以下代码。

#include <stdio.h>
int global = 2023;  //全局变量
int main ()
{
    
    
	int global = 2022; //局部变量
	printf("%d\n",global);
	return 0;
}

在上面这段代码中我们会发现我们定义了一个相同名字的局部变量,输出结果呢?
在这里插入图片描述
我们会发现输出结果为2022,这是为什么呢?
C语言规定当局部变量和变量变量同名的时候局部变量优先使用。(但在实际敲代码时不建议读者用同一个变量名定义两个变量)

4.4 变量的作用域和生命周期

作用域

作用域(scope)是程序设计概念,通常来说,一段代码中所用到的名字并不总是有效的/可用的,而限定这个名字的可用性的代码范围就是这个名字的作用域。

1.局部变量的作用域是变量所在的局部范围。
2.全局变量的作用域是整个工程。

生命周期

变量的生命周期指的是变量的创建到变量的销毁之间的一个时间段。

1.局部变量的生命周期是:进入作用域生命周期开始,出生命周期结束。
2.全局变量的生命周期是:整个程序的生命周期

4.5常量

再C语言中常量可以分为以下几种:

  • 字符常量
  • const修饰的常变量
  • #define定义的标识符常量
  • 枚举常量

1.字符常量

‘a’、‘1’、'!’等在键盘上输入的用单撇号括起来的一个字符就是字符常量。

2.const修饰的常变量

我们先来看以下代码

#include <stdio.h>
int main()
{
    
    
	const int a = 4;
	printf("%d\n", a);
	a = 98;
	printf("%d\n", a);
	return 0;
}

我们直接运行的话会发现编译器报错,即用const修饰变量后无法在被改变。在这里插入图片描述
记下来我们再来看下面这段代码

#include <stdio.h>
int main()
{
    
    
	const int a = 20;
	int arr[a];  //初学者只需知到arr[]中如果有数值必须是常量即可
	return 0;
}

运行后这段代码后,我们会发现编译器也报错。
在这里插入图片描述

上面两个代码也反映了const修饰变量a后,这里的a具常属性不能改变,但本质上还是一个变量(即常变量)

3.#define定义的标识符常量

同理我们先来看下面这段代码并运行

#include <stdio.h>
#define MAX 1000
#define CH 'w'
int main()
{
    
    
	int a = MAX;
	printf("%d\n", a);
	int arr[MAX] = {
    
     0 };
	printf("%c\n", CH);
	return 0;
}

在这里插入图片描述
我们发现上面这段代码成功运行并输出了相关性息。读者可能已经发现#define+变量名+数字等好像只是把后面的常量名换成了变量名而已,本质上并没有发生改变。恭喜你答对了,实际上就是这个意思。

4.枚举常量

在生活中有很多值可以一一列举出来(例如:性别、三原色、血型等等)
下面以三原色(red、green、blue)为例来看看相关语法

#include <stdio.h>
enum COLOR
{
    
    //列出枚举类型enum COLOR的可能取值
	RED,
	GREEN,
	BLUE
};
int main()
{
    
    
	printf("%d\n", RED);
	printf("%d\n", GREEN);
	printf("%d\n", BLUE);
	return 0;
}

在这里插入图片描述
上面代码读者可以看出在屏幕输出时打印的是下标(从0开始)
需要注意的是从屏幕输出可以看出我们枚举类型在此是常量不可以改变,重新赋值,但可以在enum函数定义中改变其初值。有兴趣的话,读者可以自己在编译器上敲敲看。
本篇文章在此就结束,也欢迎各位读者发表自己的讲解,感谢各位读者阅读。

猜你喜欢

转载自blog.csdn.net/Zhenyu_Coder/article/details/130036870