
c语言
Kuroba_thief
互相交流
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
几个常见的链表面试题<一>
1.单链表实现约瑟夫环 ListNode* JosephusProblem(ListNode* hus,size_t k) { ListNode* man,*next; assert(hus); man = hus;while (man->next != man)//直到剩下一个人终止循环{ size_t count = k; //走了k步原创 2017-10-05 20:01:24 · 620 阅读 · 0 评论 -
结构体的内存对齐
首先,先看一段代码:(windows下32位)struct s1{ int a; char b; double c;};struct s2{ char a; double b; int c;};我们看看这两个结构体大小为多少?我们可以发现这两个结构体的大小不仅不是13,而且还不相同!造成这种结果的原因就是接下来我们要探讨的——内存对齐。内存对齐的原因:①平台原因...原创 2018-03-13 23:28:13 · 591 阅读 · 0 评论 -
数组指针、 指针数组、函数指针、函数指针数组和指向函数指针数组的指针
本篇主要介绍一下数组指针、指针数组、函数指针数组和指向函数指针数组的指针。希望能和大家一起学习,互相交流。(所讲内容的操作均在32位系统下进行)指针数组:形如:int *p1[5];(p1为数组名)首先我们要知道“[ ]”的优先级比“ * ”高,现在,我们不难理解,p1先与“[ ]”结合构成一个数组,然后在与“ * ”结合,说明数组的元素是指针类型,最后与“ int ”结合,说明指针指向的原创 2017-10-13 21:28:30 · 1212 阅读 · 1 评论 -
详解malloc/free和new/delete
今天就浅谈一下malloc/free和new/delete的区别,剖析一下它们的工作原理以及使用宏来模拟实现new/delete的功能。区别:①malloc/free是c/c++的标准库函数,而new/delete则是c++中的运算符;②malloc/free只是动态分配内存空间/释放空间。而new/delete除了这些以外还会调用类的构造函数和析构函数进行初始化和清理;③mall原创 2017-10-22 21:43:04 · 762 阅读 · 0 评论 -
C语言实现简易版扫雷游戏
最近用C语言实现了一个简易版的扫雷游戏,感觉很有意思! 效果图:游戏界面效果图代码如下#include<stdio.h>#include<stdlib.h>#include<time.h>#include<string.h>#define ROW 9#define COL 9#define ROWS (ROW+2)#define COLS (COL+2)#define MAX 10原创 2017-10-12 23:12:18 · 2884 阅读 · 1 评论 -
数组的初始化和简单使用
关于数组,有好多值得我们注意的地方,今天就来和大家浅谈一下数组的故事。1.数组的初始化数组的初始化有这样几个点需要我们注意: ①如果我们只是定义了一个数组但并未对其初始化时,数组中的元素全是随机值; ②当我们初始化数组的元素(注意是从第一个元素开始初始化)小于数组的大小时,其余未初始化的数组元素均被编译器初始化为0;例如:int arr[5]={1,2}; ③当我们有确定的元素个数时,在定义数原创 2017-10-10 23:05:06 · 4881 阅读 · 0 评论 -
浅谈函数的调用,栈帧的创建和销毁
今天用一段简单的程序详细的看看函数在调用过程中的栈帧情况。(栈帧表示程序的函数调用记录) 代码如下:int Add(int a, int b){ int ret = 0; ret = a + b; return ret;}int main(){ int a = 10; int b = 20; int ret = 0; ret = Add(a,b);原创 2017-10-28 17:12:06 · 627 阅读 · 0 评论 -
辗转相除法求两个非负数的最大公约数问题
求两个非负数的最大公约数有多种方法,常见的就是辗转相除法。①常规方法:int main() { size_t x, y, tmp;printf("请输入两个数:");scanf("%d %d",&x,&y);//实现辗转相除 while (x%y) { tmp = x%y; x = y; y = tm原创 2017-10-10 17:19:24 · 2322 阅读 · 0 评论 -
链表面试题(二)
今天继续为大家带来几道常见的链表面试题,如有问题,欢迎大家指正。1.判断链是否带环 我们可以定义两个快慢指针,快指针走两步,慢指针走一步。如果这个链表带环,则这两个指针会相遇。 这里注意的是,为什么快指针要走两步,如果三步呢?其实这也是个数学问题,快指针走两步能够保证 每个节点都可以遍历;如果走三步,则两个节点会错过或者不能遍历每个节点。如图: int IsCircle(ListNode原创 2017-10-09 20:00:12 · 499 阅读 · 0 评论