c语言入门
biter down
这个作者很懒,什么都没留下…
展开
-
位移操作符 <<左移 与 >>右移 的基本逻辑
举一个正数10二进制表示的列子:(int占四个字节,也就是32个比特位(1B==32b))后面去掉1位,后面补齐一位1(因为去掉的一位的后面一位是1):按照一个数的正负,直接写出他的二进制形式,就是他的原码。我们会发现,a的第一位二进制是0,的b第一位二进制是1。1:原码=补码-1 再 符号位不变按位取反。2:原码=补码符号位不变按位取反 再 +1。:符号位为1,再直接写出他的二进制形式。:符号位不变,其他位按位取反。前面去掉两位0,后面补齐两位0。后面去掉1位,后面补齐一位0。原创 2023-01-15 19:34:25 · 394 阅读 · 0 评论 -
二个升序数组合并
/arr1 与 arr2 比较 并赋值给arr3。原创 2023-03-09 19:47:06 · 154 阅读 · 1 评论 -
B146 添加逗号
数字之间加逗号原创 2023-03-05 23:14:00 · 58 阅读 · 0 评论 -
qsort的使用说明 和 冒泡实现
qsort原创 2023-03-03 17:29:03 · 62 阅读 · 0 评论 -
指针入门常识
str2(比较的是两个数组的首元素地址,比较内容使用strcmp)str3==str4(存放相同的字符串常量,内存给的是相同的指针地址)(函数的返回类型)(*指针名)(函数的参数)原创 2023-03-03 17:14:52 · 61 阅读 · 0 评论 -
找单身狗 一个数组中的元素都成对出现,但有两个数只有一个,编写程序找出这两个单身狗 (使用亦或操作符)
/根据数组中每个元素pos位的不同,将元素分为两类并放入数组single_dog中。//找单身狗 一个数组中的元素都成对出现,但有两个数只有一个,编写程序找出这两个单身狗。//找到a中二进制位为1的位置,放入pos中。//将两个单生狗的异或值放入a中。异或操作符,二进制处理符,同0异。//打印出两个单身狗。原创 2023-03-03 16:47:42 · 78 阅读 · 0 评论 -
malloc,calloc,realloc
内存函数的使用原创 2023-02-26 21:16:34 · 70 阅读 · 0 评论 -
通讯录的结构体实现
c语言结构体通讯录的实现原创 2023-02-24 23:37:53 · 83 阅读 · 0 评论 -
j结构体内存对齐
不是所有的硬件平台都能访问任意地址上的任意数据的;原因在于,为了访问未对齐的内存,处理器需要作两次内存访问;而对齐的内存访问仅需要一次访。如果嵌套了结构体的情况,嵌套的结构体对齐到自己的最大对齐数的整数倍处,结构体的整。结构体总大小为最大对齐数(每个成员变量都有一个对齐数)的整数倍。体大小就是所有最大对齐数(含嵌套结构体的对齐数)的整数倍。其他成员变量要对齐到某个数字(对齐数)的整数倍的地址处。编译器默认的一个对齐数 与 该成员大小的。定类型的数据,否则抛出硬件异常。结构体的内存对齐是拿。原创 2023-02-22 17:50:31 · 156 阅读 · 0 评论 -
简易版最长序列
/k指向element与element_num数组,表示将arr中出现的元素与该元素的元素个数分别放在element与element_num数组中。例如:给你的数是:1、 2、 3、 3、 4、 4、 5、 5、 5 、6, 其中只有6组数:1, 2, 3 - 3, 4 - 4, 5 - 5 - 5 and 6.//当出现flag为1的情况时,表明j指向的arr数组出现了element数组未记载的新元素。j++) //j指向arr数组,将arr数组遍历。//最长的是5那组,长度为3。原创 2023-02-06 16:05:20 · 153 阅读 · 0 评论 -
assert断言
如果在包含 时已经定义了具有该名称的宏,则禁用此宏。如果此具有函数形式的宏的参数表达式比较等于零(即表达式为 false),则会将一条消息写入标准错误设备并被调用,从而终止程序执行。显示的消息的细节取决于特定的库实现,但它至少应包括:断言失败的谁、源文件的名称以及发生断言的行号。因此,此宏旨在捕获编程错误,而不是用户或运行时错误,因为它通常在程序退出其调试阶段后被禁用。在代码的开头包含 #include如果此表达式的计算结果为 ,则会导致。原创 2023-01-22 21:33:54 · 135 阅读 · 1 评论 -
位操作符的题目
位操作刷题原创 2023-01-18 22:38:27 · 54 阅读 · 1 评论 -
c语言冒泡排序与选择排序
c语言冒泡排序与选择排序原创 2023-01-18 22:29:50 · 66 阅读 · 1 评论 -
c语言随机数
rand 与 srand。原创 2023-01-18 22:19:49 · 69 阅读 · 0 评论 -
strcmp
strcmp函数比较两个字符串是否相等 前面字符大返回正值 后面大返回负值举例:原创 2023-01-18 22:18:04 · 69 阅读 · 0 评论 -
getchar 与 putchar 的使用
getcahr putchar 从键盘输入输出 字符(也只能是字符 且返回的为ACSCII值 getchar从缓冲区读取 "\n"在缓冲区被读取导致密码一直不一致 :字符 清除缓冲区:原创 2023-01-18 22:14:28 · 94 阅读 · 0 评论 -
const 与 static 函数
1..const使变量的值能够不被改变 2. static修饰局部变量,使局部变量只执行一次并记录。(若static修饰全局变量或自定义函数,只能在本源文件中使用,不能被其他文件用extern引入原创 2023-01-18 22:08:20 · 110 阅读 · 0 评论 -
结构体的基本使用
结构是一些值的集合,这些值称为成员变量,结构的每个成员可以是不同类型的变量。结构的成员可以是标量,数组,指针,甚至可以是其他结构体。原创 2023-01-18 20:06:48 · 62 阅读 · 0 评论 -
指针数组概念
指针数组是由指针为元素组成的数组:指针数组的应用:原创 2023-01-18 15:22:37 · 56 阅读 · 0 评论 -
二级指针是什么,如何使用
二级指针pp变量解引用一次为存放一级指针p的地址,解引用两次为变量a。二级指针是指针变量,存放的是一级指针变量的地址。原创 2023-01-18 12:22:19 · 177 阅读 · 0 评论 -
C语言指针
指针是c语言的精髓,广泛作用于数组中,可以使我们更好理解计算机的内存分配。原创 2023-01-17 21:25:44 · 96 阅读 · 0 评论 -
^异或 操作符
当不创建临时变量交换两个整数的值原创 2023-01-15 20:32:19 · 210 阅读 · 3 评论 -
位操作符 &与, |或 的基本逻辑
位操作符 &与, |或 , 的基本逻辑原创 2023-01-15 20:08:16 · 115 阅读 · 0 评论 -
扫雷九乘九
简易版扫雷原创 2023-01-10 16:06:12 · 83 阅读 · 0 评论 -
不是很聪明的三子棋
三子棋小游戏原创 2023-01-07 21:06:57 · 63 阅读 · 0 评论 -
C语言数组的打印
C语言本身是不做数组下标的越界检查,编译器也不一定报错,但是编译器不报错,并不意味看程序就是正确的,所以数组的下标如果小于0,或者大于n-1,就是数组越界访问了,超出了数组合法空间的访问。数组的下规定是从0开始的,如果数组有n个元素,最后一个元素的下标就是n-1。求数组的长度:使用sizeof:arr数组除以arr数组的第一个元素。二维数组的存储和一维数组是一样的,都相差四个字节。所以程序员写代码时,最好自己做越界的检查。2:字符类型数组的创建及打印。数组的下标是有范围限制的。数组上传的是首元素的地址。原创 2023-01-06 16:16:11 · 19415 阅读 · 4 评论 -
函数栈帧的创建和销毁
将main函数的ebp压栈——> ebp的地址放入esp上——>计算新的esp——>将ebx,esi, edi 寄存器的值保存——> 形参访问:计算求和,在计算求和的时候,我们是通过ebp中的地址进行偏移访问到了函数调用前压栈进去的参数——>将求出的和放在eax寄存器尊准备带回。寄存器中有 eax,ebx,ecx,edx ,ebp,esp这些常见的寄存器,而其中ebp,esp这两个寄存器中用于存放地址,这两个地址是用来维护函数栈帧的。代码执行到Add函数的时候,就要开始创建Add函数的栈帧空间了。原创 2023-01-04 17:54:48 · 168 阅读 · 1 评论