- 博客(14)
- 收藏
- 关注
原创 预处理是程序的历程
1、组成一个程序的每个源文件通过编译过程分别转换成目标代码(object code)。2、每个目标文件由链接器(linker)捆绑在一起,形成一个单一而完整的可执行程序。3、链接器同时也会引入标准C函数库中任何被该程序所用到的函数,而且它可以搜索程序员个人的程序库,将其需要的函数也链接到程序中预处理阶段:将预处理指令读取,并告诉预处理器读取头文件中的内容;文件格式.i编译阶段:存在汇编语言程序,将各种代码翻译成汇编语言;文件格式将.i格式文件翻译成.s汇编阶段:打包可重定位程序,..
2022-04-21 00:17:07
108
原创 C语言中的动态内存
1、动态内存和静态内存1.1静态内存:例如:int arr[10],int b = 1;这种申请空间的方式申请到的是静态内存,这种内存的大小是不能改变的。静态内存的特点:1) 空间开辟大小是固定的。 2.)数组在申明的时候,必须指定数组的长度,它所需要的内存在编译时分配。在实际应用中,我们要用的内存不仅仅是固定大小的静态内存,比如有些需要空间少的变量,分配给他过多的空间会导致空间上的浪费,而有些数据数量很多的变量,则可能因为初始分配的内存太少导致数据不能充分的使用。为...
2022-04-18 23:20:48
682
原创 结构体,枚举,联合
1、结构体2、位段3、枚举4、联合1、结构体1.1结构的概念结构是一些值的集合,这些值得类型可以是不同的类型。例如:整型,浮点数甚至的结构体类型自己本身。1.2结构声明结构的声明采用struct tag//结构体名称{member-list//成员类型列表}variable-list;//声明的变量例如:声明一个学生信息struct student{ char name[10]; int age; int grade;...
2022-03-26 16:40:28
127
原创 单链表的一般理解及其基本操作
顺序表的缺陷:1)顺序表的长度固定,有时需要扩容2)在中间或者头部插入删除数据的时候需要移动大量的数据,降低性能。而为了弥补顺序表的缺陷研究出了链表。1.链表的定义链表是线性表的一种,它是一种逻辑上连续但是物理存储空间上不连续的一种数据结构。链表又分为单链表、双链表、循环链表以及静态链表。1.1 单链表的定义单链表是指通过一组任意的存储单元来存储线性表中的数据元素。即可以使用任意不连续的内存来存放同一组中的数据 。链表是由一个一个的结点组成的,没有结点分为数据域和指针域,数据域是
2022-03-21 14:40:45
1515
原创 数据存储(C语言)
目录1.整型在内存中的存储2.大小端字节序及怎么判断3.浮点数在内存中的存储方式1.整型在内存中的存储(32位)1.1原码,反码,补码计算机整数在内存中有原码,反码,补码三种方式。这三种方法都有符号位和数值位,符号位0表示正数,1表示负数。负整数数值位的表示方法各不相同。原码:直接将数值按照正负数形式翻译成二进制就可以了。反码:原码的符号位不变,其余各位按位取反。补码:反码加一即可得到例如-10原码:1000 0000 0000 0000 0000 00
2022-03-02 16:39:59
460
原创 力扣消失的数字(C语言)时间复杂度O(n)
方法一: 采用加法,将数组中所有的元素相加,然后再计算1一直加到n的和,用后者减去前者即得消失的数字int Missingnum(int* nums, int numsSize){ int sum1 = 0; int sum2 = 0; for (int i = 0; i < numsSize; i++) { sum1 += nums[i]; } for (int i = 0; i <= numsSize; i++) { sum2 += i; } retur..
2022-03-01 18:15:04
578
原创 不使用中间值交换两个变量的值方法及其原理
目录1.常规方法2.使用加法3.使用^来实现1.常规方法 在平时时我们要交换两个变量的值时,我们常常使用暂存变量来保存中间数,以此来实现交换两个变量的值,这种方法简单且易实现。void change(char* p1, char* p2){ int tmp = 0; tmp = *p1; *p1 = *p2; *p2 = tmp;}2.使用加法 这个方法的原理很简单就是使用了一点加法知识。void change(char* p1, char...
2022-02-25 01:16:57
1220
原创 人工智障三子棋
学习完数组和函数,我们就可以做一些比较有意思的事情了,比如篇文章所说的三子棋小游戏。首先在开始写代码之前我们需要知道这个游戏所需要的内容有哪一些,划分模块。游戏菜单 玩家如何选择游戏模式 游戏棋盘 玩家下棋的方法 电脑下棋的方法 如何判断输赢接下来我们就来完善模块中的内容1.游戏菜单三子棋的游戏菜单很简单只需要1.开始游戏和2.结束游戏就可以了void menu(){ printf(" 1.开始游戏 "); printf(" 2.结束游戏 ".
2022-02-22 12:54:37
2924
原创 字符串函数简介及各种函数的实现方法
1,strlen函数:计算字符串长度size_t strlen( const char *string );首先来看strlen函数的描述:它的参数是一个字符串,返回值是一个无符号数;所以我们来尝试实现这个函数1)利用循环来实现字符串都是以'\0'结束的,我们由此可以得到一个实现strlen的函数int my_strlen(char* str){ int count = 0; while (*str) { count++; str++; } return co.
2021-12-26 12:45:26
1322
原创 愿自己快快进步
某机械大四学生,对机械没有兴趣,喜欢逻辑推理的东西,所以决定转行计算机,很喜欢计算机解决问题的思维方式。希望自己能够保持自己的这份兴趣,熟练使用一门计算机语言,熟悉计算机的运行方式,掌握大部分常见的算法,能够独立的发现错误并且改正错误,能够想出独一无二的算法。坚持阅读,然后好好利用互联网上的资源来学习。经过大学的经历,曾经自暴自弃沉迷游戏,现在觉得游戏真的一点意思都没有,每周坚持天天都学习计算机,敲代码,看书。心理最想进的公司就是华为了,因为之前看华为被美国卡脖子,真的非常难受,再者就是都说
2021-12-10 22:58:47
2476
原创 指针进阶记录
一.字符指针 char* p = "abcdef";//是一个常量字符串,常量字符串在内存中只保存一份,也就是所有指向常量字符串中保存的地址都是一样的,这样可以节省空间。char* pa = "abcdef"; char* pb = "abcdef"; printf("pa = %p,pb = %p\n", pa, pb); printf("%c\n", *pa); printf("%s", pa); 根据结果可知打印 *p 得到的是 a;打印pa得到的是abcdef;这是因为采用..
2021-12-04 14:25:48
71
原创 记录指针初级
一 初级指针1.int* p=&a//p就是一个指针变量指针就是一个变量,是用来存放地址的变量(存放在指针中的值都被当作地址来使用)。2.指针的大小,在32位平台上是4个字节,在64位平台上是8个字节。3.指针类型的意义①决定了指针进行解引用的时候能够访问空间的大小例如:int* p; //表示*p能够访问四个字节。 char* p//表示能够访问一个字节。 double* p//能够访问八个字节。②在指针+数字中的情况不同...
2021-11-27 22:51:39
619
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人