注释👾
什么是注释??按我初略的理解就是把不需要的代码给屏蔽掉
代码中有不需要的代码可以直接删除,也可以注释掉
代码中有些代码比较难懂,可以加一下注释文字
![](https://i-blog.csdnimg.cn/blog_migrate/77c167c378fdc552c22e5122ad5fa8b7.png)
注释的快捷方式:ctrl+k+c
取消注释的快捷方式:ctrl+k+u
/*c语言的注释风格*/
//c++的注释风格//
选择语句👾
#include<stdio.h>
int main()
{
int input = 0;
printf("从大一开始,你要好好敲代码吗");
scanf("%d",&input);
if(input == 1)//这里小心不能把==改为=,前者是等于后者是赋值
{
printf("好offer");
}
else
{
printf("烤地瓜");//这个if 和 else组合的就是一个简单的选择语句
}
return 0;
}
循环语句👾
循环系统可以很快解决反复单一的事
![](https://i-blog.csdnimg.cn/blog_migrate/0cbf243fdc2381d09255b51a702a8c10.png)
![](https://i-blog.csdnimg.cn/blog_migrate/74f80cfdedfca520fbd9d6497aed0c68.png)
函数👾
c语言中的函数和数学中的映射关系极像。
![](https://i-blog.csdnimg.cn/blog_migrate/5df20b97c1cc43fcb7d82a154bcdcd0a.png)
![](https://i-blog.csdnimg.cn/blog_migrate/81c24c82c5ee0d6da726b16bb728e6fd.png)
c语言的函数可以简化代码,并且可以反复利用。可以处理大量代码。
数组👾
什么是数组?? ---一组相同类型元素的集合
怎么存储1-10的数字,怎么存储?
![](https://i-blog.csdnimg.cn/blog_migrate/6142611937c7d514939e0eba87e54cc0.png)
数组的下标
C语言规定:数组的每一个元素都有一个下标,下标都是从0开始的。数组还可以通过下标来访问。
![](https://i-blog.csdnimg.cn/blog_migrate/a03088a754524e1a9c795be0ed94d24c.png)
这个是以5的下标来访问的
![](https://i-blog.csdnimg.cn/blog_migrate/52c0fc9ef578bd4ef230c88664fcf4c9.png)
数组的使用案列:
![](https://i-blog.csdnimg.cn/blog_migrate/e57fd120ac592b4af84f37a4df499d13.png)
操作符👾
C语言的操作符可以方便码友们编写程序,常见的操作符如下图:
![](https://i-blog.csdnimg.cn/blog_migrate/f9d095dba5d88abe82fa438350821542.png)
算数操作符
![](https://i-blog.csdnimg.cn/blog_migrate/6e8f568921bc77437e2bf04d11802f94.png)
%取模只能对整数有效!
![](https://i-blog.csdnimg.cn/blog_migrate/44fe1e44bf8168a695254039f9dd56a9.png)
注意:上面的float s = 10.0f去掉f后虽然默认是double类型,但是会报警告,因为double类型向内存申请需要8个字节,而float是4个字节
注意:除法操作符的两端如果都是整数,执行的是整数除法,但只要有一个操作数是浮点数,执行的就是浮点型的除法
移位操作符
>> <<(移动的是二进制位)
位操作符(也是二进制位)
& ^ |
赋值操作符
![](https://i-blog.csdnimg.cn/blog_migrate/50823f66e76e25ab7e859bcb62b30904.png)
a = a + 3 ==> a+=3 (给a自己加个3) a = a - 5 ==> a-=5
其实就是一个缩写。
单目操作符
![](https://i-blog.csdnimg.cn/blog_migrate/2b90a2ca4fb660d1202a203c2fa1b80d.png)
![](https://i-blog.csdnimg.cn/blog_migrate/bb74822363ef5c9604900470f1110e9c.png)
a--也可以理解为 int b = a,a= a-1先给b使用再减去1
如果改为--a,那结果就是a=9,b=9
关系操作符
![](https://i-blog.csdnimg.cn/blog_migrate/55a70c6426a40beda08d95ef581dbec3.png)
逻辑操作符
![](https://i-blog.csdnimg.cn/blog_migrate/02bf9779873f50b4606931b3740c9655.png)
条件操作符(三目操作符)
![](https://i-blog.csdnimg.cn/blog_migrate/3ed2fcf5c5f9303c4f0151fa0f616739.png)
![](https://i-blog.csdnimg.cn/blog_migrate/df8d9e9d29eb7dfbae9763212223ba13.png)
用条件操作符(三目操作符)来简化这个程序:
m = (a > b ? a : b);//翻译过来就是:a>b吗,如果是真就把a赋给m,如果为假,b就赋给m
exp1 ? exp2 :exp3
逗号操作符
![](https://i-blog.csdnimg.cn/blog_migrate/9ebce4ee23fbf798cefd915c796d18c4.png)
d的结果是5
exp1,exp2,exp3,...expN
下标引用、函数调用和结构成员
[]
![](https://i-blog.csdnimg.cn/blog_migrate/5771815ca0138a00025f798300e4edee.png)
()
![](https://i-blog.csdnimg.cn/blog_migrate/3516f81dd7f44bc071e9443b6cc1c573.png)
.
->
常见的关键字👾
![](https://i-blog.csdnimg.cn/blog_migrate/54272e37422e7c2a2dd95d0b767f4040.png)
register(寄存器)
![](https://i-blog.csdnimg.cn/blog_migrate/b257cc6a2cd13c93e53c0c81309d7478.png)
typedef(类型重命名)-----可简化类型名
![](https://i-blog.csdnimg.cn/blog_migrate/dfb213e29dfdb07af626d03dfd9ce4c6.png)
关键字static----修饰局部变量
![](https://i-blog.csdnimg.cn/blog_migrate/af7980697972caacebe29e2edb7502bb.png)
上面的a出循环就会被销毁。
![](https://i-blog.csdnimg.cn/blog_migrate/0d4368440f9967b9201ca55fd7aeaab0.png)
![](https://i-blog.csdnimg.cn/blog_migrate/55add6c9f92088e91306155cc0af9984.png)
static修饰局部变量,使得局部变量出了作用域不会销毁,改变了生命周期
一个普通的局部变量是放在栈区的,而被static的修饰的局部变量,是放在内存的静态区的。
static修饰全局变量
![](https://i-blog.csdnimg.cn/blog_migrate/1ffa07b26d91c2225107fe3e31b6a09e.png)
注:必须要使用声明extern,不然会报错。
int g_val = 2023//如果把这行代码最前面加上static,那么系统将会报错
因为static修饰全局变量时全局变量的外部链接属性就变成了内部链接属性,只能再自己所在的.c文件内部使用,其他的.c文件无法使用。即影响了变量的作用域。
static修饰函数
原理和static修饰全局变量极其相似。
函数是具有外属性的,static修饰函数后,函数的外部链接属性就变成了内部链接属性;被static修饰的函数只能在自己所在的.c文件内使用,相当于影响了作用域。
#define定义常量和宏👾
定义常量
#define M 100
#define STR "hello world" //这里尽量别加;
int main()
{
printf("%d\n",M);
printf("%d\n",STR);
}
#define ADD(x,y) ((x)+(y))
#include<stdio.h>
{
int main()
int sum = ADD(2,3)
printf("sum = %d\n",sum);
sum = 10*ADD(2,3)
printf("sum = %d\n",sum);
return 0;
}
指针👾
要了解指针就必须要了解内存
内存是电脑上特别重要的存储器,计算机中的程序的运行都是在内存中进行的。
所以为了有效的使用内存,就把内存分成一个个小的内存单元,每个内存单元的大小是1字节。
为了能够有效的访问到内存的每一个单位,就给内存单元进行了编号,这些编号被称为该内存单元的地址。
![](https://i-blog.csdnimg.cn/blog_migrate/4a210beeee65ba56b9d379b03c72adfa.png)
编号-地址-指针 ----几乎等价,叫法不同而已(个人认为)
指针变量的大小
直接上图,(在x86的环境下)计算出它们三占内存都是4个字节,这下有同学就说double类型不是占8个字节吗??不不不这是指针!是存放的地址!补:(在x64的环境下它们三的大小是8)
![](https://i-blog.csdnimg.cn/blog_migrate/f229836da22718462e58d3f5cc02b729.png)
结构体👾
结构体能使得C语言有能力描述复杂的类型。
struct类型
![](https://i-blog.csdnimg.cn/blog_migrate/6ef24a9a267ed860d83db8c749b660f6.png)
完结撒花🌺
本章就是分享个人初始C语言的一些小收获,都是对C语言简略、初步的认识。从下一篇开始就每一个小节进行更加系统地分类学习探讨,并将自己的收获都会写在博客里,分享自己的一些学习的心得。文章有什么不好的地方也请家人们给宝子一些小建议,我会认真改进的,希望在以后的日子里和大家一起加油,一起进步😍