- 博客(27)
- 收藏
- 关注
原创 结构体在内存中的对齐规则
4如果嵌套了结构体的情况,嵌套的结构体成员对齐到自己的成员中最大对齐数的整数倍处,结构体的整体大小就是所有最大对齐数(含嵌套结构体中成员的对齐数)的整数倍。3:结构体总大小为最大对齐数(结构体每个成员都有一个对齐数,所有对齐数中最大的)的整数倍。1.结构体的第一个成员对齐到和结构体变量起始位置偏移量为0的地址处。2. 其他成员变量要对齐到某个数字(对齐数)的整数倍的地址处。对齐数=编译器默认的一个对齐数 与 该成员变量大小的较小值。Linux中gcc没有默认对齐数,对齐数就是成员自身的大小;
2024-03-24 22:31:27
219
原创 浮点数在内存中存储
但是,我们知道,科学计数法中的E是可以出现负数的,所以IEEE 754规定,存入内存时E的真实值必须再加上一个中间数,对于8位的E,这个中间数是127;比如:0.5 的二进制形式为0.1,由于规定正数部分必须为1,即将小数点右移1位,则为1.0*2^(-1),其阶码为-1+127(中间值)=126,表示为01111110,而尾数1.0去掉整数部分为0,补齐0到23位00000000000000000000000,则其二进制表示形式为。M表示有效数字,M是大于等于1,小于2的。1:E不为全0,或全1。
2024-03-24 13:53:54
240
原创 如何判断当前机器是大端存储,还是小段存储?
大端(存储)模式:是指数据的低字节内容保存在内存的高地址处,而数据高位字节内容保存在内存的低地址处。小端(存储)模式:是指数据的低字节内容保存在内存的低地址处,而数据高位字节内容保存在内存的高地址处。
2024-03-18 17:24:58
217
原创 输入一个整数数组,实现一个函数,来调整该数组中数字的顺序使得数组中所有的奇数位于数组的前半部分,所有偶数位于数组的后半部分。
来调整该数组中数字的顺序使得数组中所有的奇数位于数组的前半部分,输入一个整数数组,实现一个函数,所有偶数位于数组的后半部分。
2024-02-05 18:40:40
70
1
原创 写一个函数,判断一个字符串是否为另外一个字符串旋转之后的字符串。
写一个函数,判断一个字符串是否为另外一个字符串旋转之后的字符串。例如:给定s1 =AABCD和s2 = BCDAA,返回1。printf("不是旋转后的结果\n");printf("是旋转后的结果\n");给定s1=abcd和s2=ACBD,返回0。AABCD左旋一个字符得到ABCDA。AABCD左旋两个字符得到BCDAA。AABCD右旋一个字符得到DAABC。
2024-02-05 18:37:31
169
1
原创 判断谁是凶手?
日本某地发生了一件谋杀案,警察通过排查确定杀人凶手必为4个嫌疑犯的一个。在请根据这些信息,写一个程序来确定到底谁是凶手。已知3个人说了真话,1个人说的是假话。以下为4个嫌疑犯的供词。
2024-02-05 18:29:23
196
1
原创 不创建临时变量(第三个变量)实现两个数的交换
那么该如何在不创建第三个变量的情况下将两个变量内部值进行调换呢?这就需要用到位操作符"^",位操作符“^”作用是将两个数进行"按位异或"。数字在计算机内是按数字的二进制补码进行计算的,当对两个数进行“按位异或”时,相同位的数字相同时结果为0;00000000000000000000000000001011 11的二进制补码。当我们写代码时在对两个变量内部值进行调换时,我们首选的得到方法都是创建第三个变量,从而将两其个变量内的值进行调换。所以我们就可以用"^"符实现两个变量的相互转换,如图代码。
2024-02-05 18:23:13
212
1
原创 扫雷游戏是如何设计的
再继续分析,我们在棋盘上布置了雷,棋盘上雷的信息(1)和非雷的的信息(0),假设我们排查了某一个位置后,这个坐标处不是雷,这个坐标的周围有1个雷,那我们需要将排查出的雷的数量信息记录存储,并打印出来作为排雷的重要参考信息的。那这个雷的个数信息存放在哪里呢?假设我们排查(8,6)这个坐标时,我们访问周围的一圈8个位置,统计周围雷的个数时,最下面的三个坐标就会越界,为了防止越界,我们在设计的时候,给数组扩大一圈,雷还是布置在中间的9”9的坐标上,周围一圈不去布置雷就行,这样就解决了越界的问题。
2023-12-16 18:41:21
20
1
原创 条件操作符
条件操作符的逻辑是:如果exp1为真,则执行exp2,exp2就为整个表达式的结果。反之如果为假,则执行exp3,exp3就为整个表达式的结果。例如下面例子
2023-12-15 21:12:33
21
原创 扫雷游戏。
/数组全部初始化为'0'printf("游戏结束,退出游戏\n");printf("选择错误,重新选择\n");printf("------扫雷游戏------\n");printf("该坐标已经被排查了,重新输入坐标\n");//mine数组中存放布置好的雷的信息。//show数组中存放排查出的雷的信息。printf("坐标非法,请重新输入\n");printf("很遗憾,你被炸死了\n");printf("请输入要排查的坐标:");//该坐标不是雷,就得统计坐标周围有几个雷。//棋盘初始化的函数。
2023-12-14 22:09:37
8
1
原创 size of 和 strlen的区别
sizeof是一个关键字,也是操作符。计算的是字符串占内存的大小,单位是字节。在使用sizeof计算字符串的大小是包含字符串末尾的“\0"的。strlen是一个函数,它用来计算字符算的长度,但他不包含结束字符。
2023-12-07 00:59:58
12
原创 break和continue语句
break的作用是用于永久终止循环,只要执行了 break,就会直接跳出循环,继续执行后面的程序。而continue 的作用是跳过本次循环continue后的代码。在循环执行的过程中,如果由于某些状况需要终止循环,就需要用到break和continue两个关键字。
2023-12-04 23:33:18
17
原创 字符和ASCLL编码
在计算机上所有的数据都是以二进制存储的包括这些字符,如果给这些字符每一个编一个二进制序列,这个就叫编码。由于美国国家标准学会(ANSL)出台一个标准的ASCLL编码便于大家相互使用,不造成混乱。语言中的字符就遵循了ASCLL编码的方式。在键盘上我们可以敲出各种字符如:‘a’,‘b’,‘c’,‘#’,‘&’等。
2023-12-03 23:00:24
22
1
原创 C语言分支语句
上面代码中根据表达式的的不通值执行相应的case 分支,比如表达式值为2,则执行case2中的语句2,如果找不到相应的值,就执行default分支。C语言的分支语句主要有 if 和switch。注: Switch后的表达式必须为整型表达式。表达式为真,则执行语句内容,否则不执行。case后的值必须整型常量表达式。
2023-12-02 23:00:46
13
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人