1.2(完结)C语言进阶易忘点速记

news/2024/11/20 7:11:37/

1.大端存储:高权位数字放在低地址处,低权位数字放在高地指处。(以字节为单位)

2.小端存储:低权位数字放在低地址处,高权位数字放在高地址处。(以字节为单位)

3.变量(char类型)进行运算的时候一定要注意整形提升与截断,最后要注意以什么形式打印出来。

4.v=5.5=101.1=1.011*2^2=(-1)^0*1.011*2^2

                                                         S    M          E

5.浮点数的存储

24101f2f08914ad391f659cc2a642292.jpg

21520fa5d0ca424fbec5972ecc47c93f.jpg 

bc4fb23e8e4745f5800c611620d81695.jpg 

6.数组指针的用法

86f08c5d24564ef59f9f5feba91b8b78.jpg

7.数组指针的类型

5b3f413c0daa453e986e702ceeacead0.jpg

8.指针数组和数组指针

9d45b3265839417fb87bc684bdbbe1cc.png

2fff003223d444f99802e2b92c344509.jpg 

9.一维数组传参

9319b234c4d444ac85f4d562c2a6dd59.jpg

10.二维数组传参

347c405d85934c75a6071ec1c63794e1.jpg

11.二级指针传参

5ddb0bb20b664066b5196e07cbf16f1e.png

12.函数指针调用函数(*可以写也可以不写)

8c0b4483653b4707b7980f20899b609e.jpg

13.两段有趣的代码

3f7e20f00ffd47669ae6e4cf7d20829f.jpg

a940432ef81d4215b7860bb04f22f84e.jpg 

5ef4d00beeea48a0ab91cf4096d62726.jpg 

14.函数指针数组

dcd621bd386c48ffa1eadf1a0d2e6c66.jpg

15.函数指针数组在特定条件下简化switch case语句。

16.函数指针数组指针

742db39c6e484ef6a1a495e8249a7a4b.jpg

17.回调函数。

18.qsort

0e407658879d46c5bbde499304af8b5d.jpg

8cb31b8209504987af3b951471ba760b.jpg 

19.一维数组sizeof的细节问题

a9bc7c48903e453192841e1c55b8fa7a.jpg

 

20.字符数组的细节问题

ecb8b79fa1f544199254251bdd8ac554.jpg

 

21.字符串数组的细节问题

a662bf1b058c4d2fbe55defadb780c9d.jpg

 

22.字符串指针的细节问题

a9d4efb64fda4bb4999c3527a3fdf351.jpg

 

23.二维数组的sizeof的细节问题

89630953d80e4fa4877a518cb7c046c1.jpg

 

24.习题1

3cb065b261b34873bae427a952aadda7.png

 

25.习题2

5a44e0fbe4b4421e8050973ab715c0a9.jpg

 

26.习题3 

afc7e83fc9224bb6817739b0776fb007.jpg

 

27.习题4

d4883c7ebe4d4324b3ce90964d5d751e.jpg

 

28.习题5

6ee1031a22314d659f67d2df0fe7ef39.jpg

29.第7题

971396c1a441430b8d880f22ef521199.png

 

30.第8题

5d9c9e0cb8a2494790335f8ddd37ffbe.jpg

 

31.两个size_t的数相减仍是size_t类型(不会出现负数),注意库函数返回值的使用。

28bd594b1d6e4b1990be9d2012085445.png

1c209b1b4099481cbd8e2b95b1b72692.jpg 

 

32.神奇的函数(strtok)

5cec56c2f76c4ce391a9c635c3bd24a2.jpg

33.strerror(errno要包含头文件errno.h)

0d662021d29b400a975e33471b1b4fac.png

008675ce64b7453988166aa44c1e93eb.jpg 

 

34.perror头文件为stdio.h

e5f6c1f317664b79b2d9c765414fd9e9.jpg

 

35.一些字符函数

694c8b18c894481fb8bf02f2c10de154.jpg

 

36.字母大小写转换函数

e6e0147af15f4aa9b4518f2158bb6319.jpg

089a74a7105c4abbbabf776f9a9060ca.jpg 

 

37.memmove理论上是memcpy的升级版(可以自己拷贝自己)。

38.匿名结构体类型在类型创建好了之后直接创建变量,只能用一次。两个完全相同的匿名结构体类型,编译器认为他们的类型是不一样的。

39.结构体可以乱序初始化。

struct 结构体名字 变量名 = {.结构体内的变量名 = 赋的值, …};

40.结构体的内存对齐。

a.结构体的第1个成员,对齐到结构体在内存中存放位置的零偏移处。

b.从第2个成员开始,每个成员都要对齐到一个对齐数整数倍数。(数组按每个元素大小的计算)(对齐数:结构体成员的自身大小和默认对齐数的较小值,vs中默认对齐数是8,gcc中没有默认对齐数)

c.结构体的总大小,必须是所有成员的对齐数中最大的整数倍。(数组按每个元素大小的计算)(包含嵌套结构体成员中的对齐数)

d.如果结构体中嵌套了结构体成员,要将嵌套的结构体成员对齐到自己的成员中最大对齐数的整数倍处。

41.offsetof(struct s1, 结构体内的变量);

返回该变量的偏移数。

头文件stddef.h

本质上是个宏。

42.使用结构体的时候为了节省空间,尽量把占用空间小的结构成员放在一起。

43.vs修改默认对齐数

98bad8bc8a3d412bb6ec47ecd84cd707.png

730ec9e61f384b5d95c47910df001eee.png 

 

44.位段,成员类型必须是整型,并且所有成员必须是同一种类型,只能放在结构体里使用。

fc71b29d020a4e418eaa3e805eec8f18.png

03481e6b3a494c3dbd8ddf0f7f557eba.jpg 

4173b5c23c64413db4f903cfcf9dc54b.jpg 

45.枚举常量

0ad085000c2642a0b38cb44f02957e72.png

 

在使用switch case语句的时候,为了增加代码的可阅读性,建议使用枚举常量。枚举常量的大小是4。

46.联合体需要内存对齐。

47.malloc

9a2be3a990eb4a2a8f917da13df70857.png

48.malloc和calloc的区别。

 

e6da4c999c484af188cce57b034bb4a9.png 

49.realloc

 

c83a8acf80c44392a2fddbb85deb6f39.png 

 

50.如果要用realloc实现malloc的功能,第1个参数传入空指针(NULL)。

51.在函数内进行动态内存申请,如果没有释放,一定要写上注释。及时释放内存,总之,free函数一定要及时执行(有的时候虽然有这条语句,但是并没有执行,可能被跳过了)。

52.习题1

8748dda2209e417385d1781a01f304bf.jpg

 

53.习题2

f3809ad79cc049e391ea2257e9f8eca8.png

 

54.柔性数组,c99标准,结构体中的最后一个元素允许是未知大小的数组。(arr[] 或arr[0])

cb9f73fc7fe74e5899b8509310440c01.jpg

f3cca067b2e34902963befb0e257a30e.png 

 

55. C语言文件

8145a4a173b740989a8dc59bb14091ab.jpg

6f399a556ea14ac8902f87467753d845.jpg 

 

如果以只写的形式打开一个有内容的文件,原来的内容会被清空。

56.文件扩展名一定要展开。

57.文件的顺序读写。

c7904cfa46da420eb08ec0c2f4e57090.png

 

写入:fprintf,fputc,fputs,fwrite

读取:fscanf,fgetc,fgets,fread

58.sprintf,把一个格式化的数据,转化成字符串形式,放到一个字符数组中去(把格式化的数据转化成字符串)。

59.sscanf,从一个字符串中还原出一个格式化的数据。

60.fseek

c9b5333b361a45e6958abfd42157d87f.jpg

 

61.ftell

1d42438f094b494e865482a5625f653c.jpg

 

62.rewind

912df7143f384bfb98954bc100c3df18.jpg

 

63.feof

f8d57cb4f04d4a55a995c11314dc7026.jpg

dd592690e09c470ab07e3bc1b59f2ad4.png 

 

64.缓冲区可以被修改大小,(setbuf)了解一下就可以了。

65.文本文件(格式化文件)和二进制文件的区别。

70e7d790540845ae8658483c268dd005.png

66.代码翻译

21733ec0eab84020b4f1de010b936106.jpg

 

67.预定义符号

a8a14850b77a4244a6f989c9edb62613.jpg

 

68.#的作用

2cb21faa54a44fd69c00a383a3fe763f.jpg

efffbf47818241958e1545caac50ddeb.jpg 

 

69.##的作用,把两端的符合拼接成一个。

1a21c42121544cc9985d2ed16e850917.jpg

 

70.宏参数有时带有副作用

45176f0f692a4226b16f3d9a1f7d2642.jpg

 

71.宏可以传类型

2866e1b769224cdfa131cd2c11d79c7b.jpg

 

72.宏和函数的对比

049ca73b1f2648b7a38c748f1d156e5d.jpg

3437a9dc0d674a54be0e6c805097eb4f.jpg 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 


http://www.ppmy.cn/news/24177.html

相关文章

姿态估计端到端新方案 | DirectMHP:用于全范围角度2D多人头部姿势估计

前言 现有的头部姿势估计主要集中在具有预先检测到的正面头部的单个人,这依赖于单独训练的面部检测器,不能很好地泛化到完整的视点。在本文中,作者关注全范围 MPHPE 问题,并提出了一个名为 DirectMHP 的直接端到端简单基线&#x…

Element UI框架学习篇(五)

Element UI框架学习篇(五) 1 准备工作 1.1 在zlz包下创建数据传输对象类EmpDTO package com.zlz.dto;import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor;//根据前台来的 Data public class EmpDTO {private String name;private Stri…

oralce查找返回不同的值,寻找不同的表(原创)

查找返回不同的值,寻找不同的表 select case a_id when 1 then (select b_id|| ||b_desc from b where b.b_ida.a_id) else (select e_id || ||e_desc from e where e.e_ida.a_id) end from a; 以上方法的缺陷是单表,判断。今天来了个挑战&#…

西湖论剑 2023 比赛复现

WEB real_ez_node 在 route/index.js 中: router.post(/copy,(req,res)>{res.setHeader(Content-type,text/html;charsetutf-8)var ip req.connection.remoteAddress;console.log(ip);var obj {msg: ,}if (!ip.includes(127.0.0.1)) {obj.msg"only for…

第44章 用户密码实体及其约束规则的定义实现

1 说明: 由当前程序需要兼容实现多种用户密码的加密操作,所以必须把“CustomerPassword”定义为实体类,该类用于用于把加密方式、密钥及其加密后的密码持久化到“CustomerPassword”表中,以便用为用户登录操作提供验证支撑。 如果…

ubuntu20.04安装docker与docker-compose

安装docker 查看系统发行版本 cat /proc/version1、更新apt包 sudo apt-get update2、安装必备的软件包以允许apt通过 HTTPS 使用存储库(repository): sudo apt-get install ca-certificates curl gnupg lsb-release3、添加Docker官方版本…

SharkTeam:Move合约开发与合约安全

近期,围绕 Aptos 和 Sui,新兴的高性能 L1链 以及这些新链背后的 Move 智能合约编程语言引起了很多关注,社区也非常活跃,很多开发者和项目已经开始积极转向 Move。但Move相对Solidity差别较大,即使是相对比较接近的Rust…

java面试题(二十)中间件redis

1.1 Redis可以用来做什么? 参考答案 Redis最常用来做缓存,是实现分布式缓存的首先中间件;Redis可以作为数据库,实现诸如点赞、关注、排行等对性能要求极高的互联网需求;Redis可以作为计算工具,能用很小的…