新手小白初次接触C语言我们要了解什么呢?(一)

目录

1.什么是C语言?

2.第一个C语言编程

2.1如何写第一个C语言代码呢?

2.2简单介绍一下编译器和编辑器

3.基本数据类型

1.那么如何计算变量或者数据类型所占内存空间的大小呢?

 2.这时候需要了解:这些数字的单位是:字节,接下来认识计算机常见单位 

3.那么为什么要学习这么多整形呢?

 4.数据类型的使用

4.常量和变量

4.1定义变量的方法

4.2变量的命名 

 4.3变量的分类

4.4变量的使用

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

4.5.1作用域

4.5.2生命周期

接下来我来解答每位新手小白的自我怀疑

什么是C语言呢?

什么是计算机编程语言呢?简单地说,计算机编程语言就是计算机语言。

那么,什么是计算机语言呢?我们都知道:汉语、英语、日语是人和人进行交流的语言,而计算机语言就是人和计算机交流的语言。

简单介绍一下计算机语言:

如C、C++、Java、Python、go语言等等上千种计算机语言,而C语言仅仅是其中的一种语言而已。人呢,通过写代码的形式与计算机进行沟通。接下来,我们官方系统的进行介绍:

1.什么是C语言?

C语言是一种通用计算机编程语言,广泛用于底层开发。C语言的设计目标是提供一种能以简易的方式编译,处理低级存储器,产生少量机器码以及不需要任何执行环境支持便能运行的一种编程语言。

C语言的良好跨平台性,以一个标准写出的程序可在许多电脑平台编译,甚至包含一些嵌入式处理器(单片机或称MCU)以及超级电脑等作业平台。

二十世纪八十年代,为了避免各开发厂商用的C语言语法产生差异,由美国国家标准局为C语言制 定了一套完整的美国国家标准语ASCII,作为C语言最初的标准。 [1] 目前2011年12月8日,国际标准化组织(ISO)和 国际电工委员会(IEC)发布的C11 标准是C语言的第三个官方标准,也是C语言的最新标准,该标准更好的支持了汉字函数名和汉字 标识符,一定程度上实现了汉 字编程。

C语言是一门面向过程的计算机编程语言,与C++,Java等面向对象的编程语言有所不同。 其编译器主要有ClangGCC、WIN-TC、SUBLIMEMSVC、Turbo C、DevC++等。

解释一下,什么是底层开发?

我们都知道电脑是由硬件组成的,那如何做到开机屏幕变亮和软件的安装呢?这是因为我们在电脑装了一个操作系统(Windows/MacOs/Linux等)。操作系统凌驾与电脑的硬件上,它可以让我们的硬件开始工作,而在操作系统和硬件之间还有一个东西,叫做驱动层。经常玩游戏的大家肯定知道大型游戏对显卡的驱动的配置要求较高。操作系统实际上是调用我们的驱动来让硬件进行工作。我们在操作系统上可以进行应用软件的安装,如QQ/百度网盘/游戏,这些都装在操作系统上。一般情况下,我们把操作系统以上叫做上层软件开发,操作系统及以下叫做底层/下层。举一个简单的例子:Linux操作系统就是用C语言写的,操作系统的软件也有用C语言写的,驱动同样也可用C语言写。也就是说,C语言擅长与底层打交道,但并不意味着C语言不能与上层软件打交道。简单说一下,游戏引擎基本上是C/C++完成的。

那么,为什么要对C语言进行标准呢?

在早期,计算机能够识别的是二进制序列,当时人们要通过写二进制数向计算机传达信息,这时就要求人们对不同功能的二进制序列了如指掌,什么样的二进制能实现什么功能,代表什么意思。这是相当困难并且麻烦的,而人们最早写程序需要边写边查手册。这时人们开始思考能不能用某段特定的二进制数表示一种助记符,用助记符代替机器指令,如110110表示Add进行加法,100101表示Sub进行减法呢?不断大量的助记符的出现构成了汇编语言。随着后来的发展,衍生出了比汇编语言更方便的B语言,再后来衍生出了C语言,逐渐出现了C++,Java等等计算机语言,像这样的语言称作高级语言。在C语言的出现时,大家对C语言进行标准的规定,但是人人有规定太乱了,后来美国国家标准局对C语言进行了统一标准叫做ANSI C(C89,C90,C99...)。大家注意:如果一门语言有了国际化的标准,这门语言才能走得长远。


2.第一个C语言编程

2.1如何写第一个C语言代码呢?

  1. 创建一个项目,不能直接上来就.c。
  2. 创建源文件。
  3.  写代码

         当我们写C语言代码时,代码要放在文件中。

         .h (header):头文件    .c (source):源文件  (一种叫法)

         平常代码放在源文件,头文件的作用后期讲。

#include<stdio.h>
//main叫主函数
//主函数是程序的入口,但是有且只有一个main函数
// 不能有多个主函数
//C语言代码必须有主函数
//一个工程(项目)中可以有多个.c文件,但是多个.c文件中只能有一个main函数
//通过注释可以屏蔽掉多余的main函数
int main()
{
	printf("hello world\n");
	return 0;
}//执行代码

注意事项:

(1.)main函数是程序的入口,那我打印多个"hello world"需要写多个main函数才可以吗?

在程序执行时,编译器报错内容为int main()已经有主体,说明有且只能有一个main函数。

(2.)思考另外一种情况

 

 当我再次创建另一个.c文件时,两个文件中都有main()函数,运行程序:

 再次报错为:找到多重定义符号和main()函数已经有定义。可见一个项目中可以有多个.c文件,但是多个.c文件中只能由一个main()函数。

此时:通过快捷键 Ctrl+E+C注释选中行将多余的main()函数注释掉。

左边为注释选中行,相邻右边图标为取消注释。示例如下:

//int main()
//{
//	printf("hello world\n");
//	return 0;
//}

 (3.)在部分教材中可以看到如下写法:

void main()
{
    printf("hello world");
    return 0;
}

那是因为,你可能看了比较古老的书,这种写法是旧式写法。

可能还有这种写法:

int main(void)
{
    printf("hello world");
    return 0;
}//void写到这里表示main函数不需要参数。

 加void或不加没有任何问题。

可能还有这种写法:

int main(int argec,char* argv[])
{
    printf("hello world");
    return 0;
}

 这种写法表示main函数需要两个参数,写上不用也没什么关系,具体为什么这样写会在特别后期讲到。

(4.)为什么main函数前面是int 呢?

因为int 代表的是整型,对应数学中的整数,这里写int 是指main函数最终会返回一个整数,走到最后return 返回 0,返回了一个整数,这里不用深入理解,记住就好!同时注意main后面的圆括号(),不可以随意更改。

(5.)printf()不理解:

printf是一个打印函数,专门用来在屏幕上打印数据的,可以指定格式。

printf是C语言标准库中提供的库函数。使用printf这个库函数需要包含一个头文件,可以理解为别人的东西,需要打招呼才能使用。#include<stdio.h>,include就是包含头文件这个意思,stdio是standard input output ,叫做标准输入输出头文件。未来讲到的sacnf函数叫做输入函数,也需要包含这个头文件。

2.2简单介绍一下编译器和编辑器

博主当前使用的是VS2019---->是集成开发环境----缩写是:IDE

集成开发环境集各种功能于一体:编辑器(写代码)、编译器(运行代码)、链接器(链接代码)、调试器(调试程序) 。


3.基本数据类型

int        //基本整形
short      //短整型
long       //长整型
long long  //更长的整型
char       //字符型
float      //单精度浮点型
double     //双精度浮点型
//C语言有没有字符串类型?

1.那么如何计算变量或者数据类型所占内存空间的大小呢?

这是需要学习sizeof(变量名)是C语言的关键字,是C语言专门用于计算指定数据类型字节数的运算符。 

int main()
{
	printf("%d\n", sizeof(char));//1
	printf("%d\n", sizeof(int));//4
	printf("%d\n", sizeof(short));//2
	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
	printf("%d\n", sizeof(long double));//12   //C99引入
	return 0;
}

 那么1、4、2、8代表的是什么呢?

 2.这时候需要了解:这些数字的单位是:字节,接下来认识计算机常见单位 

我们日常生活中见到的是十进制位的0~9组成的数字,而二进制位是由0~1组成的序列。1个字节等于8个比特位。也就是说char型数据在内存中占1个字节,int型数据在内存中占4个字节(32个比特位)。单位之间的换算如下:                                                      

 那为什么long和int都是四个字节呢?

C语言规定:sizeof(long)>=szieof(int)就可以,而VS编译器采用的是等于。

3.那么为什么要学习这么多整形呢?

我们可以想象一下,两个比特位用二进制表示:00表示十进制数的0,01表示1,10表示2,11表示3;而四个比特位用二进制表示:0000表示十进制数的0,0001表示十进制数的1,0010表示2,0011表示3,0100表示4...等等,

可见不同比特位能表示的十进制数是有范围的,也就是说空间越大,所表示的范围就越大。未来,我们可以在适当的数据上采取适当的数据类型。short型能表示的范围是:-32768~32767,而int型能表示的范围是:-21亿~21亿,当我们需要表示一个人的年龄的时候,年龄不会超过三位数,所以age用short型更节省空间。

 4.数据类型的使用

类型的使用是用来创建变量的。

int main()
{
	char ch = 'w';//当我想把字符w放进空间的时候
	printf("%c", ch);//w
    float weight=75.5f;//这是一个小数,编译器默认认为是double类型,在小数后面加f,编译器会认为是float类型
    double pai=3.14;//精度比float高一些
	return 0;
}

4.常量和变量

生活中有些值是不变的:圆周率、性别、身份证号码、血型等等。

有些值是可变的:年龄、体重、薪资等等。

不变的量,在C语言用常量的概念表示,可变的量用变量来表示。

4.1定义变量的方法

类型+变量名=变量的值

int age=18;//尽量给定有意义的变量名
double salery=20000.0;
int m;//这种方法也可创建变量,但不推荐。编译器报错:使用未初始化的局部变量m
//好的习惯:在创建变量的同时,给变量一个初始值。

4.2变量的命名 

  • 只能以字母(包括大小写)、数字和下划线(_)组成。
  • 不能以数字开头。
  • 长度不能超过63个字符。
  • 变量名区分大小写的。
  • 变量名不能使用关键字。
int _2b;
int Age;
int age;
int char;//会报错!是错误的!

 4.3变量的分类

  • 局部变量
  • 全局变量

在定义变量的时候,放在大括号内部就叫局部变量,放在大括号外部就叫全局变量。

int a = 10;//全局变量
int main()
{
	int b = 20;//局部变量
	printf("%d\n", b);
	printf("%d\n", a);
	int a = 20;//代码会冲突吗?
	printf("%d\n", a);//打印结果为:20
	return 0;
}
int c = 100;//c是全局变量

注意:

  • 当局部变量和全局变量名冲突的时候,优先局部变量。
  • 建议大家以后尽量不要冲突,不是一个好习惯。

4.4变量的使用

规则:什么时候使用,什么时候创建。

看下面这个例子:

int main()
{
	int num1 = 0;
	int num2 = 0;
	int sum = 0;
	//输入数据
	scanf("%d%d", &num1, &num2);//是一个库函数,可以从键盘接收数据
	//取地址num1,取地址num2
	sum = num1 + num2;//我们在前面在创建一个sum变量
	//打印结果
	printf("%d\n", sum);
	return 0;
}

当我们按Ctrl+F5(执行程序不调试)运行代码时:

此时光标在闪烁,等待我们输入数据。

此时我们输入2 3,中间必须有空格,不然会认为输入一个数字23

 按下回车,2+3=5的结果放到sum中,结果输出为5。

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

4.5.1作用域

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

  1. 局部变量的作用域是变量所在的局部范围。
  2. 全局变量的作用域是整个工程。
  • 举个栗子(局部变量):

在大括号里定义了一个整型变量a=100,当我们在屏幕上打印a时,结果是100。

 此时程序报错,说明a只在大括号内部起作用,出大括号便失效了,原因就来自于作用域。

 因为a是在大括号内部定义,所以a在局部范围是可用的。一旦出了这个范围,a就不能用了,大括号外不是a的作用域。

  •  举个栗子(全局变量):第一种使用方法
int main()
{
	{
		int a = 10;//a变量的作用域
	}
	{
        //定义另一个变量的作用域
	}
	return 0;
}

{}大括号叫做“一个代码块”,表示一个作用域,在main函数内部,程序员自己将整个大区域划分为不同的小区域,每个小区域没有联系,每个小区域代表一个作用域。 

int g_a = 2022;
//为了解释清楚,先用一下函数,后期会讲
void test()//自定义函数
{
	printf("test=%d\n", g_a);
}
int main()
{
	printf("%d\n", g_a);
	test();//调用函数
	return 0;
}

变量在主函数中能用,在test()函数中也能用,说明g_a变量是全局变量,作用域是整个工程。注意:大括号也是在main()函数内部的哦!

//如果把变量定义放在函数下面呢?
//为了解释清楚,先用一下函数,后期会讲
void test()//自定义函数
{
	printf("test=%d\n", g_a);
}
int g_a = 2022;
int main()
{
	printf("%d\n", g_a);
	test();//调用函数
	return 0;
}

 这时编译器会报错:g_a未声明的变量。因为代码的执行是从上到下运行的,test函数运行时发现前面没见过g_a,所以会警告。只需要在前面声明一下就可以啦。变量是先声明后使用的。

int g_a;
void test()

 全局变量的第二种使用方法:

 extern关键字用于声明外部符号。

4.5.2生命周期

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

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

通过一个例子解释一下局部变量生命周期:

 当我们进入第二个大括号是创建了一个在内存中占四个字节的整型变量a,a=10.我们进行第一次打印。当我们从第二个大括号出去时,变量a就不能使用了,此时相当于把向内存申请的四个字节的空间还给了操作系统(回收),而不是消失了。a就会自动销毁,也就是说a进入作用域生命周期开始,出作用域的时候生命周期结束。

 分析一下全局变量的生命周期:

全局变量由上面的例子知道,全局变量在主函数的整个范围内都可以使用,甚至其他函数也可以使用。也就是说,全局变量的生命周期是:整个程序的生命周期。

下节笔记将从常量开始.....

 献给努力奋斗的你!

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

敖云岚

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值