1,存储类:
通过特定的字符来定义变量和函数可见性(作用域)和生命周期
1,auto存储类 auto 存储类是所有局部变量默认的存储类并只能修饰局部变量 例子: { int mount; 或 auto int month; } 2,register存储类 register 存储类用于定义存储在寄存器中而不是 RAM 中的局部变量。 寄存器只用于需要快速访问的变量,比如计数器。 但定义 'register' 并不意味着变量将被存储在寄存器中, 它意味着变量可能存储在寄存器中,这取决于硬件和实现的限制。 例子:register登记表、登记员的意思,这里是寄存器 { register int miles; } 3,static static 存储类 a,修饰全局变量或方法时候,作用域限制在当前文件中。 b,修饰局部变量将不会随方法结束销毁重置 例子: #include <stdio.h> /* 函数声明 */ void func1(void); static int count=10; /* 全局变量 - static 是默认的 */ int main() { while (count--) { func1(); } return 0; } void func1(void) { /* 'thingy' 是 'func1' 的局部变量 - 只初始化一次 * 每次调用函数 'func1' 'thingy' 值不会被重置。 */ static int thingy=5; thingy++; printf(" thingy 为 %d , count 为 %d ", thingy, count); } 结果: thingy 为 6 , count 为 9 thingy 为 7 , count 为 8 thingy 为 8 , count 为 7 thingy 为 9 , count 为 6 thingy 为 10 , count 为 5 thingy 为 11 , count 为 4 thingy 为 12 , count 为 3 thingy 为 13 , count 为 2 thingy 为 14 , count 为 1 thingy 为 15 , count 为 0 4,extern extern 存储类可用修饰方法和变量,即声明,指向具体定义的方法或变量,方便在不同文件使用。 用于提供一个全局变量的引用,对所有文件可见。 使用 extern 时,对于没有初始化的变量,会把变量名指向一个之前定义过的存储位置。 extern 是用来在另一个文件中声明一个全局变量或函数。 例子: ########support.c #include <stdio.h> extern int count; void write_extern(void) { printf("count is %d ", count); } ########main.c #include <stdio.h> int count ; extern void write_extern(); int main() { count = 5; write_extern(); } 编译: gcc main.c support.c 执行:./a.out 结果:count is 5
2,运算符:
1,算术运算符 + 把两个操作数相加 - 从第一个操作数中减去第二个操作数 * 把两个操作数相乘 / 分子除以分母 % 取模运算符,整除后的余数 ++ 自增运算符,整数值增加 1 -- 自减运算符,整数值减少 1 2,关系运算符 == 是否相等 != 是否不相等 > 是否大于 < 是否小于 >= 是否大于或等于 <= 3,逻辑运算符 && ! || 4,位运算符 & | ^ 5,赋值运算符 = 简单的赋值运算符,把右边操作数的值赋给左边操作数 C = A + B 将把 A + B 的值赋给 C += 加且赋值运算符,把右边操作数加上左边操作数的结果赋值给左边操作数 C += A 相当于 C = C + A -= 减且赋值运算符,把左边操作数减去右边操作数的结果赋值给左边操作数 C -= A 相当于 C = C - A *= 乘且赋值运算符,把右边操作数乘以左边操作数的结果赋值给左边操作数 C *= A 相当于 C = C * A /= 除且赋值运算符,把左边操作数除以右边操作数的结果赋值给左边操作数 C /= A 相当于 C = C / A %= 求模且赋值运算符,求两个操作数的模赋值给左边操作数 C %= A 相当于 C = C % A <<= 左移且赋值运算符 C <<= 2 等同于 C = C << 2 >>= 右移且赋值运算符 C >>= 2 等同于 C = C >> 2 &= 按位与且赋值运算符 C &= 2 等同于 C = C & 2 ^= 按位异或且赋值运算符 C ^= 2 等同于 C = C ^ 2 |= 按位或且赋值运算符 C |= 2 等同于 C = C | 2 6,杂项运算符 sizeof() 返回变量的大小。 sizeof(a) 将返回 4,其中 a 是整数。 & 返回变量的地址。 &a; 将给出变量的实际地址。 * 指向一个变量。 *a; 将指向一个变量。 ? : 条件表达式 如果条件为真 ? 则值为 X : 否则值为 Y 例子: int a = 4; int* ptr; //指针类型,即存放地址的变量 /* & 和 * 运算符实例 */
ptr = &a; //a的地址赋值给指针ptr printf("*ptr 是 %d ", *ptr);//指针变量前加*,表示指针指向的值。即a的值。