注释多行一般用/**/,但不支持嵌套,所以推荐用//
快速注释代码:ctrl+k+c(第一行先写个//,然后全选,再ctrl+k+c,则每一行都被分别注释)
快速放开代码:ctrl+k+u
循环:while ,do while,for
Eg. return z;
x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80MzExNTAwMQ==,size_16,color_FFFFFF,t_70" width=“60%” height=“60%” alt=""/>
Eg.int arr[10 ]={0};//第一个元素初始化为0,其余元素默认初始化为0
Eg.float a=7/2;//若两个数都是整数,则执行整数除法→3
若7/2.0,则→3.5
%取模时,两个操作数必须都为整型
存一个数存的是补码
位操作符与逻辑操作符的区别
与,异或,或(二进制)
0为假,其余全为真sizeof 与strlen 的区别
Sizeof 带上/0,整个空间的大小,一个字符就是一个字节,表char,若为int,要乘4
Strlen 不带/0,但/0作为结束标志,否则出现随机数,字符串的长度,有多少算多少
Eg.int a=(int)3.14;//(类型)强制类型转换
逗号表达式:从左到右依次计算,最后结果是整个表达式的结果
typedef 顾名思义是类型定义,这里应该理解为类型重命名
把unsigned int 定义成 uint,后面用的时候就直接写uint就行(跟int,char用法一样),不用再写长长的一串
Void 不需要返回值,没有返回值
比如要打印一个“呵呵”,不需要什么返回值
void test( )
{
int a = 1;
a++;
printf("%d ", a);
}
int main()
{
int i = 0;
while(i<10)
{
test();
i++;
}
return 0;
}
没有把值返回给a
static的用法
用法1 延长了局部变量的生命周期
用法2 extern可以让全局变量跨源文件使用(具有外部链接属性),而static则限制了这一功能(只有内部链接属性)
在sum.c里声明一个全局变量g-val,在test.c里使用
用extern在test.c里声明外部变量g-val
若在sum.c里面加一个static,则g-val只能在sum.c里面看到,在test.c里面看不到了
用法3 修饰函数跟修饰全局变量的用法完全一样(extern的和static的)
#define 定义常量和宏(甚至定义一段代码也行)规则就是“替换”
定义宏(宏是有参数的,但不要参数类型,刚好与函数区别)
内存
一个内存单元就是一个字节,一个地址
每个字节都给了一个编号,每个编号都代表一个地址
运行出的是a的首地址(第一个字节的地址)
指针变量的作用:存放地址
int a=10;
p;//解引用操作符(间接访问操作符)→p等价与a
&a;//取地址
一个指针在64位的计算机上,占8个字节;
一个指针在32位的计算机上,占4个字节。
指针:就是地址
指针变量就是存地址的变量!
结构体:创造一种自定义的复杂类型
类型要创建变量
s.name,s.age这里的点.表结构成员访问操作符
(划红线的三种表示方式是一个意思)