c工作笔记操作

基本类型

  • 数值类型:
    • 整型数:(unsigned) int (4 bytes)、(unsigned) short (2 bytes)、(unsigned) long (8 bytes)
    • 浮点数:float (4 bytes)、double (8 bytes)
  • 字符类型:char (1 byte)

字符串操作

  1. 使用 strlen 取字符串的长度;
  2. 使用 strchr 取某个字符第一次出现的位置(指针);
  3. 使用 strcpy 将一个字符串复制到另一个字符串中;
  4. 使用 strcat 将一个字符串追加到另一个字符串中。

读写文本文件

  1. 使用 fopen 函数打开文件,获得文件句柄。r 模式为读,a 模式为追加写,w 为覆盖写。
  2. 使用 fgets 函数从文件中读取一行,读到文件末尾时会返回 '\0'
  3. 使用 fputs 函数向文件中写一行。
  4. 使用 fclose 函数关闭文件。

堆内存

变量,数组,函数(我猜哦),结构体,其内存都是分配在栈上的;随着程序的运行,栈上的内存可能会被频繁地调整(也是我猜的哦)。所以,我们还可以手动从堆上去获取内存,并在合适的时候手动释放之。当内存比较大的时候,性能会比在栈上要好。

  1. 使用 malloc 函数(定义在 stdlib 中)获取内存,返回 void * 类型的指针。
  2. 使用 realloc 函数重新指定内存的大小(若需扩大则从堆中重新分配一段,若需减小则回收一部分内存);
  3. 使用 free 函数释放内存(全部回收)。

指向函数的指针

  1. 虽然函数不是一种普通变量,但是依然可以创建指向函数的指针。在创建函数指针时需要声明函数的签名(参数和返回值),然后在函数名称上使用取地址符号(&)。
  2. 指针可以重新指向另一个具有相同签名的函数,这正是指向函数的指针的价值。
  3. 猜测,每一个函数在编译器看来都是不同的类型,分配的空间也不尽相同。无法生成「函数数组」,所以函数指针的加减运算基本没有意义。

数组

  1. 使用方括号定义数组类型
  2. 数组必须有长度
    1. 人为指定长度,如 int i[3]
    2. 根据初始化的值推测长度,如 int i[] = {1,2,3},数组字面量有大括号括起来(写惯了 JavaScript 很容易犯错)。
  3. 即使不显式初始化,也会进行默认的隐式初始化操作,所以 int i[3] 相当于 int i[] = {0,0,0}
  4. 用方括号加下标的方式访问数组元素。

标准库(入门)

printf 方法来自标准库,此函数支持以模板字符串的方式打印消息,是 C 语言编写的程序向外输出消息的最直接通道。

printf("%d\n", 127);        // 127
printf("%o\n", 177);        // 177  八进制
printf("%x\n", 177);        // b1   十六进制
printf("%f\n", 314.15);     // 314.159000
printf("%.2f\n", 314.15);   // 314.15 指定精度
printf("%e\n", 314.15);     // 3.141590e+02
printf("%c\n", 'c');        // c
printf("%s\n", "hello");    // hello

sizeof运算符

  • sizeof运算符用于获得数据类型或表达式的长度(它不是一个函数)

用法:

  • sizeof(object);//sizeof(对象);
  • sizeof object;//sizeof(对象);
  • sizeof(type_name);//sizeof(数据类型);
  • 注:当获得对象的长度时,()可以加,也可以不加,但是获得数据类型的长度时,必须加上()。

C 共用体

共用体是一种特殊的数据类型,允许您在相同的内存位置存储不同的数据类型。您可以定义一个带有多成员的共用体,但是任何时候只能有一个成员带有值。共用体提供了一种使用相同的内存位置的有效方式。

定义共用体

为了定义共用体,您必须使用 union 语句,方式与定义结构类似。union 语句定义了一个新的数据类型,带有多个成员。union 语句的格式如下:

union [union tag] { member definition; member definition; ... member definition; } [one or more union variables];

union tag 是可选的,每个 member definition 是标准的变量定义,比如 int i; 或者 float f; 或者其他有效的变量定义。在共用体定义的末尾,最后一个分号之前,您可以指定一个或多个共用体变量,这是可选的。下面定义一个名为 Data 的共用体类型,有三个成员 i、f 和 str:

union Data { int i; float f; char str[20]; } data;

现在,Data 类型的变量可以存储一个整数、一个浮点数,或者一个字符串。这意味着一个变量(相同的内存位置)可以存储多个多种类型的数据。您可以根据需要在一个共用体内使用任何内置的或者用户自定义的数据类型。

C typedef

C 语言提供了 typedef 关键字,您可以使用它来为类型取一个新的名字。下面的实例为单字节数字定义了一个术语 BYTE

typedef unsigned char BYTE;

在这个类型定义之后,标识符 BYTE 可作为类型 unsigned char 的缩写,例如:

BYTE  b1, b2;

按照惯例,定义时会大写字母,以便提醒用户类型名称是一个象征性的缩写,但您也可以使用小写字母,如下:

typedef unsigned char byte;
  • 8
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值