uu们,我来啦!
今天主要和大家分享的是我六个小时视频学习之后的一些知识总结和提炼。
话不多说,开始吃饭!
1、main函数
main函数是所有函数的入口。
就是程序在执行时从哪里入手的一个重要标志。
就像我们去超市买东西,我们从超市外部能看到整个超市的轮廓,但我们如果想进入超市的内部,就必须找到一个入口,没错,main函数就是那道门。
有人说翻窗户能进去不,我不知道,也许吧,后期要是有窗户的知识在和大家分享,目前不知。
int main()这扇门的形式的是这样的,所以我且翻译它为门函数。
2、数据类型
数据类型望文生义一下就是数据的类型,望文生义正确√。
C语言中我们输入的数据有很多,根据这些数据特点我们分为了字符型、整型、浮点型大概这三大类。
整型中又含有短整型(short)、整型(int)、长整型(long)和更长整型(long long)四种,浮点型又包括单精度浮点型(float)和双精度浮点型(double)。
在我们定义数据类型的时候,字母符号常用字符类型(char),整数用short、int、long和long long类型,小数则常用float、double类型。
而整型和浮点型中有好几种又该如何选择合适的呢,这就需要我们说明一下每个类型的意义是什么。
其实在给定的数据选择类型时,其实是向内存空间申请一块地方来存放我们给出的数据,而空间的大小对于不同符号来说是不一样的。
类型 | 所占空间 | 输出符号 |
char | 1个字节 | %s |
short | 2个字节 | %d |
int | 4个字节 | %d |
lomg | 4/8个字节 | %d |
long long | 8个字节 | %d |
float | 4个字节 | %f |
double | 8个字节 | %lf |
根据自己要存储的数据先确定属于三个大类属于哪一类,再根据数据的大小来选择具体的类型。
原则是避免空间的浪费。
你想,你的计算机空间就那么大,你本可以申请两个字节的空间就够用,你非要申请四个字节,是不是浪费了点?响应国家号召,拒绝浪费,从你我做起。
3、变量、常量
继续望文生义变量就是能改变的量,常量就是常用到的不变的量。
就像生活中,你的年龄、身高、体重都是可以随着时间改变的,这种我们且看做是变量。
不变的量比如圆周率、出生年份、血型等我们且看做常量。
我们先说说变量相关的一些事。
1、变量
(1)、在定义变量的时候我们可以根据变量的自身属性来确定类型:
int height = 185;
float weight = 55.5f;
char ch = “l”
(2)、 变量的类别
全局变量和局部变量。
全局变量就是全局都能用的变量,整个工程都可以用,局部变量则只是针对局部区域的。
#include
int num = 25 //全局变量num
int main()
{
int num = 30 //局部变量num
printf("%d\n",num);
return 0;
}
第一个定义在 { } 外面的num就是全局变量,他在整个工程中都能使用,第二 num则只针对 { } 内的局部区域有效。
当上面代码中出现全局变量和局部变量值不一样的时候,优先使用局部变量的值。
我且理解为谁近就用谁,天高皇帝远,局部说了算。
对了这里用到的 "//" ,后面的文字表示注释,就是方便我们在代码里面来进行简单的介绍和说明,理解为汉语翻译,便于后期读代码,如果你想删掉几段代码,也可以用它来注释掉。
他后面的东西计算机是不会进行翻译的,注释用在代码的前面,也就相当于本行代码无效,当你想注释掉多行代码时,注释的快捷键为 "Ctral + K + C",解除注释为 "Ctral + K + U"。
(3)、 变量使用
目前对于变量的使用,我就只能理解为方便我们后期不断改变数值的量。
举个例子就是一个函数比如y=2x+6,那么输入不同的x得到的结果就不一样,x就是一个用来表示变量的字母。
这里我们顺带再讲一下输入和输出以及函数。
#include
int main()
{
int sum1 = 0; //变量初始化
int sum2 = 0;
int sum = 0;
scanf("%d %d",&sum1,&sum2);
sum = sum1 + sum2;
printf ("%d\n",sum);
return 0;
}
这里提到的sum1、sum2和sum都是变量,在引用变量时,我们首先要对变量进行初始话,因为你向内存申请空间时,空间里存放的数值是随机的,后期计算的时候不方便,所以进行初始化变量这个事情,赋值为零。
输入函数这里用到的是scanf 这个函数,将你想输入的函数通过取地址的方式来赋值给sum1和sum2,sum定义为两个数值的和。
输出函数也是打印函数,用到的是printf,将得到的结果sum的值以整型的形式打印出来。
此外这里我们可以采用函数的形式来进行程序功能的实现。
#include
int Add (int x,int y)
{
int z = x+y;
return z;
}
int main()
{
int sum1 = 0; //变量初始化
int sum2 = 0;
int sum = 0;
scanf("%d %d",&sum1,&sum2);
sum = Add(sum1,sum2);
printf ("%d\n",sum);
return 0;
}
Add就是一种函数,我理解为自己成为一个模块,引用时直接使用,内部的相关函数是已经写好的,只需要赋值就可。
(4)、变量的作用域和作用周期
在一段代码中,变量的使用效果并不是一直有效的,他所作用的区域是有限的,而变量所能产生作用的这段区域我们称为作用域。
局部变量的作用域就是变量所处的局部的范围,而全局变量的作用域是整段程序。
生命周期其实和作用域有很大的关联。
是指变量从创建开始有效到作用结束的一段时间。
局部变量的生命周期就是进入作用域到出作用域的这段时间。
而全局变量的生命周期是整个程序。
2、常量
作为在执行程序是固定不变的量一共分为四种:字面常量、常变量、标识符常量和枚举常量。
1、字面常量
1
3.14
100000
2、常变量
常变量就是常量中包含着变量,它是由const修饰变量所构成的
const int x = 1
x就是常变量,他在后续的程序中是无法直接修改的。
虽然x单拿出来是普通变量,但前面加上const后就变成无法直接修改的常变量。
3、标识符常量
类似于常变量,标识符常量是由#define来定义,例如:
#define MIN 15
这里就是定义MIN这个量为15,为标识符常量。
符号常常用大写字母表示。
4、枚举常量
num color
{
RED;
YELLOW;
BLUE;
}
大括号中的RED、YELLOW、BLUE就是枚举常量
枚举常量的默认是从0开始的,依次向下递增1。
4、字符串
存储一个字符的时候我们可以用char来向内存申请空间,当我们需要存储一串字符时则需要一种新的形式。
#include
int main()
{
char arr1[] = "abc"; //1
char arr2[] = { 'a','b','c' }; //2
char arr3[] = { 'a','b','c','\0' }; //3
printf("%s\n", arr1);
printf("%s\n", arr2);
printf("%s\n", arr3);
}
结果为:
abc
abc烫烫烫烫蘟bc
abc
字符串实际上是由一组字符组成,且由“\0”结尾的一种表达形式,如1、3所示都是完整的字符串。
“\0”的作用是标记字符串的结束,否则在读取时,会无限读取下去,直到遇见空间中随机的“\0”。
1中的这种形式默认结尾有“\0”的存在。
所以打印输出时,1、3能够正常的将字符串打印出来,而2中的字符串中没有“\0”,所以一直打印下去,直到遇见字符串外空间中的随机“\0”。
5、转义字符
转义字符其实就是转变意思的字符。
具体见下表:
转义字符 | 转变之后的意思 |
\? | 在连续使用多个问号时,防止多个问号被解析成三字母词。 其实就是因为多个问号在一起系统会自动变成其他意思 |
\' | 用来表示字符常量 ' |
\" | 用来表示字符串内部的双引号 |
\ | 表示一个\ |
\a | 蜂鸣器响一下 |
\b | 退格符 |
\f | 进纸符 |
\n | 换行 |
\r | 回车 |
\t | 水平制表符,相当于敲一下tab |
\v | 垂直制表符 |
\ddd | ddd表示八进制数字,将八进制数字转成十进制,然后转为十进制数字所对应的ASCII的字符。 例:\130 X |
\xdd | dd表示十六进制数字,将十六进制数字转成十进制,然后转为十进制数字所对应的ASCII的字符。 例:\x30 0 |
附上一张ASCII表:
6、数组
如果想存上一组数的话,显然前面提到的定义变量已经无法满足啦,这里就要用数组来存储,数组的定义在出语言中为:一组相同类型元素的集合。
如果我们要在数组里存储1~10这个数字,形式如下:
int arr[10] = {1,2,3,4,5,6,7,8,9,10}
这表示这个数组里面存有10个整型元素的,最多放10个。
如果后期我们想要调用数组中其中的一个数字时,就需要知道数组下标这一概念。
c语言中的规定,数组中的每一个元素都有自己的下标,理解为编号,下标的顺序从左到右,从零开始依次+1。
我们需要访问调用时直接用 数组名加上下标就可以arr[8]指的就是上面定义的数组中第九个元素(因为是从 0 开始计算的)。
如果储存的元素多余定义中也及时[]中的数字,超过部分不计入数组中,如果少于则缺少的位置均初始化为零。
例如:int arr [10] = {1,2,3}
int arr [10] | 1 | 2 | 3 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
下标 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |
7、选择语句
生活中我们常常会遇到一些选择决策,比如大城市的单双号限行、是否要上学等等,都需要我们进行判断后来进行下一步的计划。
计算机中面对这样的逻辑也有相应的语法设计——if语句。
其中if语句还包含单分支和双分支两种结构。
#define _CRT_SECURE_NO_WARNINGS
#include
int main()
{
int x = 0;
scanf("%d", &x);
if (x > 600)
{
printf("我考上清华了");
}
return 0;
}
如图所示,展示的就是单分支语句结构。
当我输入大于600的数字时打印“我考上清华了”,if后接着的是判断语句,判断为真,程序进入,判断为假,跳出if语句。
出了判断大小还可以判断相等。
#define _CRT_SECURE_NO_WARNINGS
#include
int main()
{
int x = 0;
scanf("%d", &x);
if (x > 600)
{
printf("我考上清华了");
}
else
{
printf("来年一定");
}
return 0;
}
双分支机构即由if...else构成。
即if判断语句为假命题时,直接进入else中执行命令。
上图中的代码实现的功能就是,当我输入大于600的时候,打印出“我考上清华了”,小于或等于600的时候打印“来年一定”。
8、循环语句
除了上面的选择情况之外,我们生活中还有循环这种逻辑存在,比如循环过了365天之后多涨一岁。
计算机中也有同样的语法对应——while循环。
举例求前100个数的和:
#include
int main()
{
int sum = 0;
int i = 1;
while (i<=100)
{
sum += i;
i++;
}
printf("%d\n", sum);
return 0;
}
该代码运行后结果为5050。
while后接表达式,如果为真则进入循环,知道表达式为假时跳出while循环执。
利用while循环我们可以实现数组的打印(利用数组小标来实现):
#include
int main()
{
int i = 0;
int arr[10] = { 1,2,3,4,5,6,7,8,9,10 };
while (i < 10)
{
printf("%d ", arr[i]);
i++;
}
return 0;
}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)