C语言类型

类型的意义

(1)使用类型开辟内存空间的大小(大小决定范围)

(2)如何看待内存空间的shi'jiao

1,内置类型
int //整形
char //字符数据类型
short //短整型
long   //长整型
float  //单精度
double //双精度
2,整形家族
//无符号
unsigned char
unsigned short
unsigned int
unsigned long

//有符号
signed  char
signed  short
signed  int
signed  long
  1. 有符号整数 在二进制补码表示法中,最高位被用作符号位,0表示正数,1表示负数。例如,一个8位的有符号整数可以表示从-128到127的范围:
    [1]对于正数,最高位为0,其余位表示数值本身。
    [2]对于负数,最高位为1,其余位通过取反加一(one's complement plus one)计算得到。

  2. 无符号整数 无符号整数不使用符号位,所有位都用于表示数值。因此,它可以表示更大的非负整数值。例如,一个8位的无符号整数可以表示从0到255的范围。

3,浮点形家族
float //单精度
double //双精度

3,自定义类型(构造类型)

数组类型

数组是一组相同类型的元素的集合,这些元素存储在连续的内存空间中,并且可以通过一个共同的名字和索引来访问。数组的大小是在声明时固定的,所以它能够高效地处理批量数据,特别是在对一组相关数据进行操作的情况下。

数组的基本形式如下:

type array_name[array_size];

其中,type 是数组元素的数据类型,array_name 是数组的名称,array_size 是数组的大小,表示可以存储多少个 type 类型的元素。

例如,要声明一个包含10个整数的数组,你可以这样写:

int numbers[10];

这将创建一个名为 numbers 的数组,可以存储10个整数。每个数组元素都可以通过索引访问,索引是从0开始的。因此,第一个元素是 numbers[0],第二个元素是 numbers[1],依此类推

结构体类型(struct)

结构体是一种复合数据类型,允许你将不同类型的数据组合在一起,形成一个整体。你可以定义一个新的结构体类型,并声明和使用结构体变量。

struct tag {
    member-list;
} variable-list;

tag 是可选的结构体标签,用于标识该结构体类型;member-list 是成员列表,包含一系列不同类型的数据项;variable-list 是可选的变量列表,用于声明结构体类型的变量。

枚举类型(enum)

枚举是另一种自定义类型,它允许你定义一组命名的整数常量。每个枚举成员都有一个默认的整数值,从0开始递增。

enum tag {
    member-list;
} variable-list;
联合类型(union)

联合也是一种复合数据类型,它与结构体类似,但不同之处在于,同一时间内联合中的所有成员共享同一块内存区域。这意味着,改变其中一个成员会影响其他成员的值。

union tag {
    member-list;
} variable-list;
4,指针类型

指针是一种特殊的数据类型,用于存储内存地址。指针变量可以指向一个变量、数组、函数或结构体等其他数据类型的内存地址。

指针的声明语法如下:

type *pointer_name;

type 是指针所指向的数据类型,* 表示这是一个指针变量,pointer_name 是指针变量的名称。

int* p;
char* p;
float* p;
...

注意

  • 指针必须被初始化为一个有效的内存地址,否则会导致未定义的行为。
  • 不同类型的指针之间不能直接转换,除非它们具有兼容的类型(如 void * 和任何其他指针类型之间的转换)。
  • 在使用指针时要小心,错误的操作可能会导致程序崩溃或者产生不可预测的结果
5,空类型(Void)

空类型(Void)是一种特殊的类型,它表示没有任何值。

通常在以下场景中使用:

  1. 函数返回值:在C、C++和Java等编程语言中,如果一个函数不返回任何有意义的值,那么可以将该函数声明为void类型。这意味着调用这个函数时不需要处理返回值。

  2. 函数参数列表:在某些情况下,你可能需要定义一个没有参数的函数。在这种情况下,你可以使用void关键字表示函数没有参数。

  3. 指针类型(无具体类型):在C和C++中,void*是一个特殊的指针类型,它可以指向任何类型的对象。这种指针通常用于通用数据操作或与操作系统接口交互,如内存分配和管理。

  4. 初始化未赋值的变量:虽然不是所有编程语言都支持空类型,但有些语言允许变量在初始化时不赋予特定值,这可以理解为一种空类型的状态。

  5. 类型安全:在一些现代编程语言中,如Rust,使用Unit类型(类似于空类型)来表示没有任何有效数据的值,它确保了类型系统的完整性。

  6. 编程概念:空类型有时也作为一个抽象的概念,帮助程序员理解和设计程序结构。例如,在函数式编程中,无操作的函数(不做任何事情并立即返回)可以被认为是一种空类型的行为。

注意

        空类型并不等同于NULLNILL是一个特定的值,表示一个引用类型的变量没有引用任何对象。而空类型则表示一个变量没有值或者一个函数没有返回值。

了解这些类型可以帮助你更好地编写和理解C语言程序,并根据需要选择合适的类型来处理数据。

你可能感兴趣的:(c语言,开发语言)