第一章,浅浅了解一下C语言,感受一下C语言的魅力

1、什么是C语言?C语言从何而生?

  1. C语言是一门通用计算机编程语言,广泛应用于底层开发(与硬件进行交互)。
  2. C语言的设计目标是提供一种能以简易的方式编译、处理低级存储器、产生少量的机器码以及不需要任何运行环境支持便能运行的编程语言。
  3. 尽管C语言提供了许多低级处理的功能,但仍然保持着良好跨平台的特性(移植性很好),以一个标准规格写出的C语言程序可在许多电脑平台上进行编译,甚至包含一些嵌入式处理器(单片机或称MCU)以及超级电脑等作业平台。
  4. 二十世纪八十年代,为了避免各开发厂商用的C语言语法产生差异,由美国国家标准局为C语言制定了一套完整的美国国家标准语法,称为ANSI C,作为C语言最初的标准。目前2011年12月8日,国际标准化组织(ISO)和 国际电工委员会(IEC)发布的C11 标准是C语言的第三个官方标准,也是C语言的最新标准,该标准更好的支持了汉字函数名和汉字标识符,一定程度上实现了汉字编程,但是汉字编程的应用不是很广泛,在我接触代码以来,从来没有见过汉字编程的代码(哈哈哈,可能作为初学者的我,见识比较窄,如果此处有误,请大家多多见谅)。
  5. C语言是一门面向过程的计算机编程语言,与C++,Java等面向对象的编程语言有所不同。 其编译器主要有Clang、GCC、WIN-TC、SUBLIME、MSVC、Turbo C等。
  6. 在这简单解释一下面向过程和面向对象的区别。

              面向过程:以事件为中心,解决一个问题,我们需要以这个问题为中心,然后一步一步具体的行为去实现解决问题,函数为最小单位。

                面向对象:当然这就是以对象为中心,解决一个问题,我们首先分析这个问题由哪几类的事物组成,然后每个类具备什么样的行为和属性。然后解决问题的方法,就是考虑哪个对象来做,而不需要考虑怎么做。

2、第一个C语言程序

哈哈哈,又来到了大家熟悉的“hello world”这个短语了。这是学习每个编程语言的必经之路。大家也不要觉得它很烦,我们要学会爱上它,那么编程就会爱上我们。这样编程思想就会直步青云。

开始咯。。。

#include <stdio.h>  //引用stdio.h头文件,输入输出头文件,如果不引用此文件,那么printf函数将用不了

int main()
{
	printf("hello world\n");  //调用stdio.h文件的库函数

	return 0;  //向操作系统返回0,表示程序正常结束,其他不同的返回值,表示程序出现了异常
}

这里就简单的使用printf()库函数打印了“hello world”。

第一个c语言程序就到此结束了,然后想实现更多好玩有趣的代码,那就好好学习,在编程中没有什么实现不了的,只有我们想不到的。

3、数据类型

数据类型也是我们学习编程语言的不可或缺的一部分。

下面我们就来看看在C语言中有哪些基本数据类型和自定义数据类型

#include <stdio.h>

int main()
{
	//C语言中基本的数据类型
	/*
	char       字符类型
	short      短整型
	int        整形
	long       长整型
	long long  长长整形
	float      单精度浮点形
	double     双精度浮点形
	*/
	
	//下面我们就来看看每个数据类型在64位机器上分别的字节大小
	//这里的sizeof是一个单目操作符,在后面会提到
	printf("%zu\n",sizeof(char));
	printf("%zu\n", sizeof(short));
	printf("%zu\n", sizeof(int));
	printf("%zu\n", sizeof(long));
	printf("%zu\n", sizeof(long long));
	printf("%zu\n", sizeof(float));
	printf("%zu\n", sizeof(double));

	return 0;
}

//运行结果
1
2
4
4
8
4
8

上面就是C语言中常见的数据类型,每个数据类型的字节大小在不同的操作平台上可能不一样。所以这个要注意。

自定义数据类型:结构体(struct)、枚举(enum)、共用体(union)。这些后面再将。

3、变量和常量

在我们生活中,有些东西是不会说我们想让它变就变的,因为他们已经被前辈们给定义了,我们只需要用它就行了,比如:性别,圆周率,身份证号码,血型等等。但有些值是随着时间而变的,比如:年龄,体重,薪资等等。不变的值,在C语言中用常量来表示,变的值中用变量来表示。

1、定义变量以及变量的使用

//定义变量
char c = 'S'; //定义一个字符类型的变量c,赋值为'S'
int age = 18; //定义一个整型类型的变量age,赋值为18
float f = 3.1415; //定义一个单精度浮点型类型的变量f,赋值为3.1415
//变量使用
int tmp = 0;
tmp = age;  //将age变量赋值给tmp变量,这样tmp的值就是18

2、局部变量和全局变量

局部变量和全局变量的主要区别就是变量的作用域和生命周期不同。

#include <stdio.h>

//定义一个全局变量
int global = 10;

int main()
{
	//定义一个局部变量
	int local = 20;
	printf("%d\n", local);
	printf("%d\n", global);
	return 0;
}

//结果
//20
//10

#include <stdio.h>

//定义一个全局变量
int global = 10;

int main()
{
	//定义一个局部变量
	int local = 20;
	int global = 50;
	printf("%d\n", local);
	printf("%d\n", global);

	return 0;
}

//结果
//20
//50

PS:当局部变量和全局变量同名时,优先使用局部变量

作用域:

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

        局部变量的作用域是变量所在的局部范围

        全局变量的作用域是整个工程,并不只是自己所在的源文件中,可以在工程下的其他源文件中使用。

生命周期:

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

        局部变量的生命周期,从变量进作用域开始生命周期就开始,到变量的作用域结束,则变量的生命周期也结束。

        全局变量的生命周期,从程序开始一直到程序结束。

3、常量

        常量又分为以下几种常量:1、字面常量。 2、const修饰的变量(常变量)。3、#define定义的标识符常量。4、枚举常量

//常量
//字面常量
"hello world";
//const 修饰的变量
const int high = 100;
//#define 定义的标识符常量
#define MAX 100
//枚举常量
//枚举的值默认是从0开始往下递增的
enum Week
{
	Mon,
	Tues,
	Wed,
	Thur,
	Fri,
	Sat,
	Sun
};

PS:上面用const修饰的变量叫做常变量,常变量实质还是一个变量,只不过是被C语言语法层面给限制了,导致被修饰后的变量的值是不能进行修改的。

4、字符串和转义

1、字符串

字符串是由双引号引起来的一串字符,也可以叫做字符串字面值。比如“hello world”。字符串字面值也是一个常量。

PS:字符串的结束标志是'\0'。在计算字符串长度的时候,用'\0'作为结束标志,但是'\0'不会算进字符串长度中,就是不作为字符串内容。

"hello world" ===> "hello world\0"
#include <stdio.h>
int main()
{
    //PS:用%s打印时,遇到'\0'时停止打印。'\0'===0

    //这是一个字符串字面值,默认在结尾处加了'\0'
    char arr1[] = "bit";  

    //这里定义一个字符数组,初始化3个元素,所以编译器就把数组的大小设置为3
    char arr2[] = { 'b','i', 't' }; 

    这里定义一个字符数组,初始化4个元素,所以编译器就把数组的大小设置为4,但是最后一个元素的值为'\0'
    char arr3[] = { 'b', 'i', 't', '\0' };

    //这里用%s打印遇到'\0'就停止,所以打印出bit
    printf("%s\n", arr1);//bit

    //因为%s打印需要遇到结束标识符才会停止,但是这数组里面没有'\0',
    //那么编译器就会一直往数组后面的内存继续寻找结束符,可能在后面找到了结束符,
    //但是这样也会把找到结束符之前的内存的内容打印出来
    printf("%s\n", arr2);//bit烫烫烫烫烫烫烫烫烫烫烫烫烫烫蘠it

    //这里用%s打印遇到'\0'就停止,所以打印出bit
    printf("%s\n", arr3);//bit

    //结果
    //bit
    //bit烫烫烫烫烫烫烫烫烫烫烫烫烫烫蘠it
    //bit

    return 0;
}

2、转义字符

我们为什么要用转义字符呢?我们看一下下面的一段字符串,“c:\codeC\test12.c”,我们的本意是想访问这目录文件。但是编译器没那么聪明,编译器就会翻译为"c:\code\test.c"-->"c:\code        est.c",为什么编译器翻译出来会有中间一段空格。因为编译会把字符串中的'\t'当做一个转义字符进行处理。所以才会出现这种情况。

常见的转义字符

转义字符    释义
\?          在书写连续多个问号时使用,防止他们被解析成三字母词
\'          用于表示字符常量'
\“         用于表示一个字符串内部的双引号
\\          用于表示一个反斜杠,防止它被解释为一个转义序列符。
\a          警告字符,蜂鸣
\b          退格符
\f          进纸符
\n          换行
\r          回车
\t          水平制表符
\v          垂直制表符
\ddd        ddd表示1~3个八进制的数字。 如: \130 X
\xdd        dd表示2个十六进制数字。 如: \x30 0

这里大家记住几个常用的转义字符就行了,不必全部记住。

5、总结

虽然在学习编程的道路越走越难,但迈出了这一步,咬着牙也要走完。我们要一步一个脚印,这样才能成长得更快!今天写了很久了,好累~。各位铁子在学习得过程中也要注意身体休息哦。晚安~

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值