首页 > 代码库 > C语言攻略指南(二)基础篇

C语言攻略指南(二)基础篇

 

变量

  • 什么是变量?

变量是程序可操作存储区的名称,通常该存储区是内存,变量就是内存中一块空间的标识。 变量具有有类型,而变量的类型决定占用内存空间的大小。

变量的命名规:由字母,数字,下划线("_"),组成的序列,第一个字符必须为字母或下划线。 

 

  • 变量的基本类型
char                        字符型            
int                         整型            
float                       单精度浮点                      
double                      双精度浮点 

 

使用 sizeof 查看占用存储大小

#include <stdio.h>
 
int main ()
{
    int i;
    
    printf("字符型所占存储空间为: %d 字节\n", sizeof(char));
    printf("整型所占存储空间为: %d 字节\n", sizeof(i));

    return 0;
}

 

  

  • 变量的声明

C语言中所有变量都必须先声明后使用。一次可以声明多个变量,也可拆开分别声明,声明的同时也可初始化。

int a, b, c;
int d = 10;
char f;

  

 

全局变量和局部变量

  • 全局变量

全局变量也叫外部变量,是在函数体外定义的。

全局变量又分 外部全局变量,静态全局变量。

使用 static 存储类型的全局变量只能在被定义的源程序文件中使用

使用 extern 存储类型的全局变量不仅能在被定义的源程序文件中使用,还可以被其他源文件中的函数引用。

 

技术分享
#include <stdio.h>
 
int a = 16;

void print()
{
    printf("全局变量 a = %d \n", a);
}

int main()
{
    print();
    
    return 0;
}
example-1

如果 print 函数定义在 全局变量的前面,就需要加上一句 extern int a,否则会报错,具体如下。

技术分享
#include <stdio.h>
 
void print()
{
    extern int a;
    printf("全局变量 a = %d \n", a);
}

int a = 16;

int main()
{
    print();
    
    return 0;
}
example-2

 

  •  局部变量

局部变量,是在函数中定义的,形参也是局部变量。

注意局部变量的作用域仅在定义该变量的函数内,如全局变量和局部变量同名,在局部变量作用域(该函数)内,局部变量覆盖全局变量。

#include <stdio.h>
 
int a = 16;

int main()
{
    int a = 3;
    printf("a 的值为 %d \n", a);
    return 0;
}

 

生存周期和作用域

所谓的生存周期,是指变量占用内存或者寄存器的时长。根据变量的存储类型的不同,在编译的时候,变量将被存在动态存储区或静态存储区中,其生存周期是由声明时的存储类型所决定的。

静态存储区:存放全局变量和静态变量,在执行程序前分配存储空间,占用固定的存储单元

动态存储区:存放的是函数中的局部变量,函数的返回值,形参等,它在函数被执行的过程中进行动态分配,在执行完该函数时自动释放。由于这种机制,前后调用同一个函数,其临时变量分配到的地址可能不同。

 

存储类型

 

auto

  非静态变量的局部变量为 auto 变量。在函数内不加 atuo 说明存储类型的变量,视为 auto 类型。

 

register

  register 存储类型用于定义存储在寄存器中的局部变量,使用 register 存储类型是为了提高执行效率。

  注意:因为寄存器的数目有限,故不能大量使用 register 。即使用了 register ,也并不意味着变量一定将被存储在寄存器中,取决于硬件和实现的限制。

 

static

  static(静态)变量,它的生存周期是从程序开始运行到程序运行结束,属于静态存储区。

  静态全局变量,它只能在被定义的源程序文件中使用,不能别其它源程序文件中的函数调用。

  静态局部变量,它的生存周期虽然是从程序开始运行到程序运行结束,但是它的作用域仅在定义它的函数内。

  静态局部变量是在它所在函数被执行时初始化,之后再执行该函数时,静态局部变量将不再初始化,而是保留上一次的值。

 

extern

  外部存储类型,extern 类型的全局变量,不仅能在被定义的源程序文件中使用,还可以被其他源文件中的函数引用。如全局变量没有指定存储类型,则默认为 extern 类型。

  

 

常量

  常量是固定的值,在程序执行期间不会改变。

  

 

算数运算符

+           加
-           减
*           乘
/           除
%           取余
++          自增
--          自减

注意:自增和自减,a++ 表示先操作后自加1,++a表示先自加后操作,自减同理。单目运算优先级大于双目运算。

 

关系运算符

>           大于 
<           小于
>=          大于等于
<=          小于等于
==          等于
!=          不等于

 

逻辑运算符

&&
||
!

  

赋值运算符

=

 将右边的值赋给左边  

i = i + 3
等价于
i += 3

算数运算符均可这么玩

 

优先级

  简单记

    ! > 算术运算符 > 关系运算符 > 逻辑运算符(!除外) > 赋值运算符

  

 

ps:重点在前部分 O(∩_∩)O~~

 

C语言攻略指南(二)基础篇