😊😊大家好呀,我是吱呜1😊😊
——以下是我学习C语言的历程,我会在此日常更新一些博客来记录我的C语言学习过程,一起从初阶段开始学习C语言,由浅入深,共同进步;
——学习一门编程语言是一条艰辛与快乐共存的一条路,如今选择了这条路,就应一直走下去!!!
——首先,不妨我们来基本了解一下C语言的基本知识,对C语言有一个大概的认识,以后再对这些基础知识进行拓宽,进行更细致的了解;本篇文章先讲述前7节内容。
——完全针对萌新伙伴💕(大佬们也可以来提提建议😁😀)
1.什么是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等。
2.第一个C语言程序
#include <stdio.h>
int main()
{
printf("hello bit\n");
printf("he he\n");
return 0;
}
//解释:
//main函数是程序的入口
//一个工程中main函数有且仅有一个
😉以上就是第一个C语言程序:“hello,world” ,这段代码是初学者入门C语言的最先学习的一段代码。首先,这段代码很多很多新手在刚开始学习的时候并不知道他是什么意思,只是跟着老师或者书本上照敲而已,在次,我以我刚学C语言的角度来讲解一下这段代码。(当然,也可以先不了解这一小段代码的意思,用心背下来,等后面学到函数的时候就会理解的十分透彻)
首先,第一行的#include <stdio.h>这段代码就已经难住了我🤔,为什么要写这段代码啊,这段代码是什么意思啊😣(这就是我刚开始学代码的时候内心正式的写照),但是没关系,接下来我来给大家讲解一下我对这4行代码的理解,方便你理解记忆🤭
1️⃣第一行的代码 #define<stdio.h>
这句代码是引用了一个头文件,表示下面我将使用printf函数在黑屏控制台打印输出的内容,就是打印出“hello,world”,所以这段代码十分重要,我们以后写的每段代码都要用到这个头文件
2️⃣第二行的代码 int main() { }
这句代码表示的是主函数的意思,main就代表主函数,这个函数返回类型是int,什么是返回类型,一个C语言程序必须要有一个主函数,所以我们写出一个C语言程序,主函数必不可少。这里我们要注意main的旁边有一个空的括号,表示无参数,或者参数为空,也就是main(void),这段代码也是可以的,可以更深的理解主函数,但是还是写main()简洁,可读性强,美观,哈哈
对于这行代码我有四点想告诉大家:
1.main不要打成mian ;
2.记得打小括号;
3.花括号更是不能忘;
4.标点一定要是英文标点,不要用中文输入法打标点!!!
3️⃣第三行代码 printf (“hello,world\n”);
这句代码的意义在屏幕上打印输出hello,world,而\n的意思是换行的意思,大家可以试一试不加这个\n再运行代码,瞬间就会理解换行是什么意思了。
4️⃣第四行代码 return 0;
这句代码的意思就是函数返回0;上面说了,函数类型的int,但是参数是空的,所以返回个0就行了,其实也相当于什么也不返回。不理解也没有事情,在后面的学习中会对这段代码的影响越来越强,我们现在应该做的是记下这段代码,并在以后的学习中使用,而且不使用错。
3.数据类型
char 字符数据类型
short 短整型
int 整形
long 长整型
long long 更长的整形
float 单精度浮点数( 有效数字8位,表示范围:-3.40E+38~3.40E+38 )
double 双精度浮点数( 有效数字16位,表示范围:-1.79E+308~-1.79E+308 )
❓在这我们要先问出这几个问题:
1️⃣为什么出现这么多的类型?
🤩因为对于不同的对象,不同的数据类型更具有代表性
🫡存在这么多的类型,其实是为了更加丰富的表达生活中的各种值。
🤠这么多的数据类型可以给我们未来的C语言使用带来便捷,更精准
2️⃣每种类型的大小是多少?
大家可以复制下面的代码到自己的编译器下试一试
#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()用于打印数据类型的大小。
打印结果如下图所示:
其中数字大小表示各种数据类型的空间大小,单位为字节(byte)
…
1TB=1024GB
1GB=1024MB
1MB=1024KB
1KB=1024byte
1byte=8bit
其中bit简写为b,音译为比特,是计算机存储数据的最小单位。
4.变量、常量
常量: 不变的值, C 语言中用 常量 的概念来表示,在生活中的有些值是不变的(比如:圆周率,性别,身份证号码,血型等等)。
变量: 可变的值, C 语言中用 变量 来表示(比如:年龄,体重,薪资)。
4.1 定义变量的方法
int age = 150;
float weight = 45.5f;
char ch = 'w';
✅选择需要定义变量的类型(int、char、float等),给变量相应的变量名字(自己灵活定义即可,最好方便自己记忆,比如需要对年龄赋值时,变量名用age),用 = 进行赋值,将值放在等号后面,并习惯性的打上分号。
4.2 变量的命名
🔴只能由字母(包括大写和小写)、数字和下划线( _ )组成。
🟠不能以数字开头。
🟡长度不能超过63个字符。
🟢变量名中区分大小写的。
🔵变量名不能使用关键字。
4.3 变量的分类
全局变量:定义在主函数int main()以外,对整个代码有效
局部变量:定义在某一个范围内用{ }括起来的区域,当出了该范围则无效
🤔那如果是下面这样写代码,会出现什么情况呢???
#include <stdio.h>
int global = 2019;//全局变量
int main()
{
int local = 2018;//局部变量
//下面定义的global会不会有问题?
int global = 2020;//局部变量
printf("global = %d\n" , global);
return 0;
}
运行结果如下:
🌍总结:
上面的局部变量global变量的定义其实没有什么问题的!
当局部变量和全局变量同名的时候,局部变量优先使用。
4.4变量的使用
我们以计算两个数字的和为例:
#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.5 变量的作用域和生命周期
作用域
作用域(scope)是程序设计概念,通常来说,一段程序代码中所用到的名字并不总是有效/可用的,而限定这个名字的可用性的代码范围就是这个名字的作用域
1. 局部变量的作用域是变量所在的局部范围。
2. 全局变量的作用域是整个工程。
生命周期
变量的生命周期指的是变量的创建到变量的销毁之间的一个时间段
1. 局部变量的生命周期是:进入作用域生命周期开始,出作用域生命周期结束。
2. 全局变量的生命周期是:整个程序的生命周期。
4.6 常量
C语言中的常量和变量的定义的形式有所差异。
C语言中的常量分为以下以下几种:
1️⃣字面常量
2️⃣const 修饰的常变量
3️⃣#define 定义的标识符常量
4️⃣枚举常量
四种常量都可以在下面一个程序中展现出来:
(其中都有注释,帮助大家更好理解🥰🥰)
#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;//是不能直接修改的!
//#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;
}
特别注意:
const 是 constant 的缩写,意思是“恒定不变的”!它是定义只读变量的关键字,或者说 const 是定义常变量的关键字。
上面例子上的 pai 被称为 const 修饰的常变量, const 修饰的常变量在C语言中只是在语法层面限制了
变量 pai 不能直接被改变,但是 pai 本质上还是一个变量的,所以叫常变量
很多人在学习 const 的时候都会混淆它与 define 的区别。从功能上说它们确实很像,但它们又有明显的不同:
1️⃣define是预编译指令,而const是普通变量的定义。define定义的宏是在预处理阶段展开的,而const定义的只读变量是在编译运行阶段使用的。
2️⃣const定义的是变量,而define定义的是常量。define定义的宏在编译后就不存在了,它不占用内存,因为它不是变量,系统只会给变量分配内存。但const定义的常变量本质上仍然是一个变量,具有变量的基本属性,有类型、占用存储单元。可以说,常变量是有名字的不变量,而常量是没有名字的。有名字就便于在程序中被引用,所以从使用的角度看,除了不能作为数组的长度,用const定义的常变量具有宏的优点,而且使用更方便。所以编程时在使用const和define都可以的情况下尽量使用常变量来取代宏。
3️⃣const定义的是变量,而宏定义的是常量,所以const定义的对象有数据类型,而宏定义的对象没有数据类型。所以编译器可以对前者进行类型安全检查,而对后者只是机械地进行字符替换,没有类型安全检查。这样就很容易出问题,即“边际问题”或者说是“括号问题”。
🎃确实显在聊这些有点早了,不懂也没有大的关系,我们目前只需要知道define和const两个定义的量不同就行了
🤓好了,今天的初学C语言分享就先到这,明天继续更新,感兴趣的佬们可以给孩子来一波三连(点赞评论加关注),给予我更多学写博客的动力,让我们共同进步,提升自我!!!
🙉以上仅仅是我个人学习结合一些博主的观点整理出来的大纲,本人也是编程新手,能力不足,如有不妥或者错误之处,也欢迎各位佬评论或者私信指正,感激不尽!!!
🐷我们下篇文章再见!!!