C语言

C数据类型
基本类型:整数类型和浮点类型。
枚举类型:也是算术类型,被用来定义在程序中只能赋予其一定的离散整数值的变量。
void类型:表明没有可用的值。
派生类型:指针类型、数组类型、结构类型、共用体类型和函数类型。
表达式sizeof(type)可以得到对象或类型的存储字节大小。

数据类型转换:C语言中如果一个表达式中含有不同类型的常量和变量,在计算时,会将它们自动转换为同一种类型。
C中的变量声明
变量的声明有两种情况:
  1、一种是需要建立存储空间的。例如:int a在声明的时候就已经建立了存储空间。
  2、另一种是不需要建立存储空间的,通过使用extern关键字声明变量名而不定义它。例如:extern int a其中变量a可以在别的文件中定义的。
  除非有extern关键字,否则都是变量的定义。
C中的左值(Lvalues)和右值(Rvlues)
 1、左值:指内存位置的表达式被称为左值表达式。左值可以出现在赋值号的左边或右边。
2、右值:指的是存储在内存中某些地址的数据。右值只能出现在赋值号右边。
C常量
常量是固定值,又叫做字面量。常量的值在定义后不能够进行修改。
定义常量
在C中,有两种简单的定义常量的方式:
  1、使用#define预处理器
  2、使用const关键字
 注意:#define是宏定义,它不能定义常量,但宏定义可以实现在字面意义上和其它定义常量相同的功能,本质的区别就在于#define不为宏名分配内存,而const也不为常量分配内存。其实const并不是去定义一个常量,而是去改变一个变量的存储类,把该变量所占的内存变为只读。
C存储类
存储类定义C程序中变量\函数的范围(可见性)和生命周期。这些说明符放置在它们所修饰的类型之前。下面列出C程序中可用的存储类:auto、register、static、exter
 1、 auto存储类
auto存储是所有局部变量默认的存储类。auto只能用在函数内,即auto只能修饰局部变量。

2、register存储类
register存储类用于定义存储在寄存器中而不是RAM中的局部变量。这意味着变量的最大尺寸等于寄存器的大小。不在内存中使用。
注意:定义register并不意味着变量将被存储在寄存器中,它意味着变量可能存储在寄存器中,这取决于硬件和实现的限制。

3、static存储类
static只被初始化一次,自从第一次被初始化直到程序运行结束都一直存在,它和全局变量的区别在于全局变量对所有的函数都是可见的,而static只对定义自己的函数体始终可见。

4、extern存储类
extern存储类用于提供一个全局变量的引用,全局变量对所有的程序文件是可见的。类似于Java中的public关键字。
杂项运算符 --> sizeof & 三元
运算符 描述 实例
sizeof() 返回变量的大小 sizeof(a)将返回4,其中a是整数
& 返回变量的地址 &a;将给出变量的实际地址
* 指向一个变量 *a;将指向a变量
?: 条件表达式 如果条件为真?则值为X;否则值为Y
goto语句
goto语句:将控制转移到被标记的语句。但是不建议在程序中使用goto语句。
函数声明
函数声明会告诉编辑器函数名称及如何调用函数。函数的实际主体可以单独定义。
函数声明包括以下几个部分:
  return_type function_name( parameter list);
函数参数
如果函数要使用参数,则必须声明接收参数值的变量,这些变量称为函数的形式参数。形式参数就像函数内的其他局部变量,在进入函数时被创建,退出时函数被销毁。
C指针
指针是一个变量,其值为另一个变量的地址。即,内存位置的直接地址。指针变量声明的一般形式为:
  type *var_name;

如何使用指针?
定义一个指针变量,把变量地址赋值给指针,访问指针变量中可用地址的值。

C中的NULL指针:
在声明变量的时候,如果没有确切的地址可以赋值,为指针变量赋一个NULL值是一个良好的编程习惯。赋为NULL值的指针被称为空指针。NULL指针是一个定义在标准库中的值为零的常量。
函数指针
函数指针是指向函数的指针变量。
函数指针变量的声明:
  typedef int(*fun_ptr)(int, int);//声明一个指向同样参数、返回值的函数指针类型。
C字符串
在C语言中,字符创实际上是使用null字符'\0'终止的一维字符数组。
C结构体
结构是C编程中另一种用户自定义的可用的数据类型,它允许您存储不同类型的数据项。结构用于表示一条记录。

定义结构
必须使用struct语句。struct语句的格式如下:
    struct tag{
        member-list
        member-list
        member-list
         ···
    }variable-list;
    tag是结构体标签。
    member-list是标准的变量定义。
    variable-list结构变量,定义在结构的末尾,最后一个分号之前,您可以指定一个或多个结构表量。
位域
所谓“位域”是把一个字节中的二进位划分为几个不同的区域,并说明每个区域的位数。每一个域有一个域名,允许在程序中按域名进行操作。这样就可以把几个不同的对象用一个字节的二进制位域来表示。
其声明格式为:
    struct 位域结构名
     {
          类型说明符  位域名 : 位域长度;
    };
位域的使用:
    位域的变量名.位域名
    位域变量名->位域名
C共用体
共用体是一种特殊的数据类型,允许您在相同的内存位置存储不同的数据类型。
  声明格式:
    union[ union tag]
    {
        member definition;
        member definition;
          ···
  }[ one or more union variables];
C存储类
存储类定义C程序中变量\函数的范围(可见性)和生命周期。
C预处理器
C预处理器不是编译器的组成部分,但是它是编译过程中一个单独的步骤。
所有的预处理器命令都是以“#”开头。

你可能感兴趣的:(C语言)