c语言速记2(存储类,运算符)

1,存储类:

通过特定的字符来定义变量和函数可见性(作用域)和生命周期

1,auto存储类
auto 存储类是所有局部变量默认的存储类并只能修饰局部变量
例子:
{
   int mount;
   或
   auto int month;
}

2,register存储类
register 存储类用于定义存储在寄存器中而不是 RAM 中的局部变量。
寄存器只用于需要快速访问的变量,比如计数器。
但定义 'register' 并不意味着变量将被存储在寄存器中,
它意味着变量可能存储在寄存器中,这取决于硬件和实现的限制。
例子:register登记表、登记员的意思,这里是寄存器
{
   register int  miles;
}

3static
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


4extern
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的值。
原文地址:https://www.cnblogs.com/straybirds/p/14762655.html