【前言注明】本系列主体思路均来自于B站up主“鹏哥C语言”,写文章目的主要是帮助自己理解消化大一上所学的C语言课程,并希望有更大的提升空间。希望我的文章可以帮到正在入门的你,如有错误的地方也请指正。文章大体风格将会偏向于简明扼要,重点都会标明。
锵锵,其实今天的知识点还是蛮重要的。哈哈笔者写作的第二天,虽然没人看但是会坚持下去的。
数据类型
先来看一个小例子吧,我们学习计算机,最终是要有能力写程序来解决生活中所描述的问题。
就像在一个购物商城中,有一批上架的商品,他们的标价是15.6元。那么在计算机中我们该如何进行描述呢?
15.6是一个小数,那么C语言如果要实现他,那么需要引入浮点数。
如果是描述年龄呢,那么就像50岁就是c语言中的整型。
那么有哪些类型呢?
char 字符数据类型
short 短整型
int 整形
long 长整型
long long 更长的整型
float 单精度浮点数
double 双精度浮点数
a如果在c语言中要描述为一个字符a
那么在c语言是这样实现的
#include<stdio.h>
int main()
{
char ch='a';
return 0;
}
char ch其实就是创建了一个名叫ch的字符型空间并且将a放了进去。
同理 int age=10;
short num=5;
那么他们的大小分别是多少呢?
上一节学习了printf函数的基本用法,可以打出一些简单的话语。
那么我们如何使用printf函数打印一个整数呢?
printf("%d",100);
这里还需要引入一个新的函数 sizeof函数
sizeof作为一个关键字也作为一个操作符,可以用来计算类型或变量的所占空间大小。
#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));
return 0;
那么程序执行结果如下
显然,sizeof的单位就是字节
在计算机中最小的单位是比特位 bit,一个比特位存放一个二进制位。
byte 字节-------8 bit
kb ----1024byte
mb----1024kb
gb-----1024mb
tb----1024gb
pb----1024tb
c语言中之所以提供如此多的类型,其实是按需索取,提高了空间的利用率。
数据类型的作用其实是为了创建变量。
变量与常量
生活中有很多的数据,有些可变,有些不可以变。
比如性别,血型等
但是年龄或者工资却是可以变化的。
即在c语言中,可变的数据对应变量,不可以变的则对应常量。
那么我们该如何定义一个变量呢?
就像前文所提到的,int age =20;
int是类型,age则是我们取得名字,也可以取其他的名字,同样我们还可以为其赋值。
但我不推荐不进行赋值。在创建时最好给一个初始化的值。
那么变量是否可以真的改变呢?来看下一个程序。
#include<stdio.h>
int main()
{
int age = 0;
age = age + 1;
printf("%d", age);
return 0;
}
可以看到age真的从0变到了1.所以age是可以改变的。
在这里 age是作为一个整形出现的,所以printf函数里是%d,
那么如果是float的话,便换成%f
同理 double所对应的就是%lf(后续会有更多介绍,目前只是初步整理。)
那么了解了变量和常量后,咱们来认识下一个点
变量的分类
变量大体上分为两类
全局变量和局部变量。
让我们通过几个例子来理解一下。
可以发现,当我们将age=0放进了一个新的{}内,在括号外的printf函数便无法正常接收到他。
此时,age就是一个局部变量了。
那么我们再来改变一下这个程序。
#include<stdio.h>
int age = 10;
int main()
{
{
int age = 0;
}
printf("%d", age);
return 0;
}
可以看到我们在主函数外写入了一个int age=10;
此时程序可以正常编译了。
可以看到显示为10。
这样这个新的age就是全局变量了。
那么如果把代码改成如下图所示呢?
#include<stdio.h>
int age = 10;
int main()
{
int age = 0;
printf("%d", age);
return 0;
}
同名的局部和全局变量同时发挥作用了。
那么编译结果会变成什么样呢?答案是0.
当局部和全局变量名字发生冲突时,局部变量将优先。
那么我们该如何使用变量呢?这里举一个简单的例子,求取两数的和。
首先我们仍然引入一个新的函数----scanf函数
scanf的作用是对变量进行赋值,但是不同于printf的是需要在变量名前加上地址符&。
代码如下
#include<stdio.h>
int main(){
int a = 0, b = 0;
scanf("%d%d", &a, &b);
int sum = 0;
sum = a + b;
printf("%d", sum);
return 0;
}
但是如果使用vs2013,2019,2022都会出现错误,这是为什么呢?原因是在vs库中他有自己所沿用的输出函数,scanf-s,但我不推荐使用,因为这个函数只可以在vs中运行,若是移到其他的软件则无法正常编译了。
那么该如何解决这个问题呢?
将上图所示的大写部分
变成#define _CRT_SECURE_NO_WARNINGS 1
放置在开头即可正常使用scanf函数了。
那么编写代码时总不可能每次都输入一遍吧,所以我们需要在文件路径中找到newc++file这个文件,以记事本的形式打开并将我上面的那串字符复制进去即可。
找到你安装vs的位置,大体路径如下,可作参考
好了,又了结一个事,好累,明天接着更后续吧。
emmm把作用域和生命周期还有字符串放一起讲好了.