c/c++学习
语言交流学习
zhouchaoya142526
include
展开
-
进程间通信--FIFO
在linux进程间通信中,管道(pipe)是非常有用的,而且我们使用的地方也非常多,但是不可否认的是管道有一个致命的缺点就是只能用于有相关关系的进程之间的通信,比如:父子进程。为了很好的解决这个问题。因此我们引入了——FIFO(first in first out)顾名思义:先入先出。相对于pipe来说,FIFO一般被称为命名管道,因为他们和文件系统相关联,可以实现任意两个进程之间的通信。原创 2017-05-24 20:13:57 · 981 阅读 · 0 评论 -
进程间通信--信号量
进程间通信除了匿名管道,命名管道;还有XSI IPC(消息队列、信号量和共享内存)。 一. 函数介绍 1.什么是信号量? 为了防止出现因多个程序同时访问一个共享资源而引发的一系列问题,我们需要一种方法,它可以通过生成并使用令牌来授权,在任一时刻只能有一个执行线程访问代码的临界区域。临界区原创 2017-06-03 20:04:36 · 444 阅读 · 0 评论 -
vim配置及插件安装管理(超级详细)
1写在前面 Linux下编程一直被诟病的一点是: 没有一个好用的IDE, 但是听说Linux牛人, 黑客之类的也都不用IDE. 但是对我等从Windows平台转移过来的Coder来说, 一个好用的IDE是何等的重要啊, 估计很多人就是卡在这个门槛上了, "工欲善其事, 必先利其器"嘛, 我想如果有一个很好用的IDE, 那些Linux牛人也会欢迎的. 这都是劳动人民的美好愿望罢了转载 2017-04-04 17:17:22 · 1680 阅读 · 0 评论 -
进度条的简单实现
代码如下#include #include int main(){ char buffer[52] = {'\0'}; char ch[] = {'|', '/', '-', '\\'}; printf("\033[?25l\033[41m"); printf("%69s\r"); fflush(stdout); printf("\原创 2017-04-06 16:22:56 · 524 阅读 · 0 评论 -
struct tast_struct 和mm_struct成员中的冰山一角
这个东西范围太广了,发现的只是其中微小的的一个角落tast_structstruct task_struct { volatile long state; /* -1 unrunnable, 0 runnable, >0 stopped */ void *stack; atomic_t usage; unsigned int flags;原创 2017-04-12 14:41:36 · 741 阅读 · 0 评论 -
atexit函数介绍
根据我们的理解,一个程序的执行都是从MAIN函数开始执行,从MAIN函数结束,这不可否认没有问题,然后依次往下一条一条语句执行,但是事实真的是这样么,接下来看看这个程序,是不是像我们想象的那样呢?在linux下我编写了这样一个程序,先不要看答案,看看能不能做对(很简单的)根据我们刚才的思路,这个程序应该是先调用fun1,fun2,...依次往下执行,最后的结果就是i am NO.1!原创 2017-04-25 17:58:48 · 747 阅读 · 0 评论 -
孤儿进程与僵尸进程
一.僵尸进程与孤儿进程定义僵尸进程:一个子进程在其父进程还没有调用wait()或waitpid()的情况下退出。这个子进程就是僵尸进程。僵尸进程会以终止状态保持在进程表中,并且一直等待父进程都去退出状态代码。孤儿进程:一个父进程退出,而它的一个或多个子进程还在运行,那么那些子进程将成为孤儿进程。孤儿进程将被init进程(也是1号进程进程)所收养,并由init进程对它们完成状态收集工作。原创 2017-04-27 16:52:30 · 529 阅读 · 0 评论 -
指针数组与数组指针比较
指针是C语言里面很重要的一个东西,C语言因为有了指针才变得绚丽多彩。有句话是这样说的“如果你掌握了指针与内存,那么C语言也就学会了。”,由此可见,指针的重要性。这里我简要谈谈指针数组与数组指针的区别。从他们的名字我们可以得出这样的结论:指针数组:这是一个数组;数组指针:是一个指针。然后我们看看他的用法:(我们在分析是数组还是指针的时候可以采用把他名字和类型分开来分析,去原创 2017-05-09 18:38:13 · 374 阅读 · 0 评论 -
函数指针和函数指针数组
不得不说,我看到这个题目,我就被他给绕晕了。更别提使用它了,尽管它难,难于理解,难于使用,容易搞混,所以我们更有理由去弄明白它,因为只有学习有难度的东西,才会有进步,如果出现的都是会的,那么我们也不会在这学习了吧。 通过最近的一些学习,我希望能够把它弄清楚,也希望能够帮助其他那些像我这个菜鸟一样,对这部分不清楚的娃。接下来我就通过自己的学习和理解,介绍一下函数指针和函数指针数组。 一.函数指针与原创 2017-05-11 16:40:12 · 500 阅读 · 0 评论 -
c语言实现简单通讯录
我们都知道通讯录有的一些基本简单的功能就是: 1.增加联系人 2.删除联系人 3.查找联系人 4.改动联系人 5.显示联系人 6. 清空联系人 7.给联系人排序 0. 退出 具有了这些基本的功能之后就是一个简单的通讯录了。说起来是不是很简单,当我初始准备确实现它的时候,我觉得真的好难好难。 其实简单的方法就是开始就给它一块固定大小的空间,比如100原创 2017-05-17 15:12:14 · 1242 阅读 · 1 评论 -
小程序
经过一周的努力学习后能编写一些简单程序了,在编写过程中也遇到了一些问题,出现了错误,最后通过搜索问题,解决问题。继续加油这是统计无符号二进制数中1的个数#includeint count_one_bits(unsigned int value){int count = 0;while(value){if(value%2 == 1)原创 2017-03-19 12:03:54 · 320 阅读 · 0 评论 -
记录 十进制转换为二进制并输出奇数位和偶数位序列
#includeint main(){unsigned int num = 0; int a[32]; int i = 0; int count = 0;printf("输入一个数:");scanf_s("%d",&num); while(num) //计算二进制数的位数 { a[i++原创 2017-03-21 11:29:49 · 645 阅读 · 0 评论 -
记录2
stat一个文件,怎么改变c-time .m-time.a-time一。改变他的权限时,change time改变2. 改变文件中内容,c-time,m-time,a-time全部改变3.显示文件中的内容,a-time会改变原创 2017-03-22 14:19:36 · 319 阅读 · 0 评论 -
记录3
猜数字小游戏(配结果图)#define _CRT_SECURE_NO_WARNINGS 1#include #include #include void menu(){ printf("***********************************\n"); printf("**********1.play 0.exist原创 2017-03-26 08:13:53 · 268 阅读 · 0 评论 -
读取C源代码,验证所有的花括号都正确的成对出现
#include int main(){int i = 0;int a = 0;printf("输入源代码:");while((a = getchar()) != EOF){if(a=='{'){i++;}else if(a=='}' && i==0){printf("花括号不成对出现\n");return 0;}else i原创 2017-03-28 16:27:35 · 434 阅读 · 0 评论 -
一个简单猜数字小游戏
#define _CRT_SECURE_NO_WARNINGS 1#include #include #include void menu(){printf("***********************************\n");printf("**********1.play 0.exist*********\n");printf("******原创 2017-03-27 17:15:48 · 417 阅读 · 0 评论 -
对于有序数组的,使用二分查找,会了吗?
#define _CRT_SECURE_NO_WARNINGS 1#include int binary_search(int arr[], int key, int left, int right){ int mid = 0; while(left <= right){ mid = left - ((left - right)>>1); if(arr[mid] > key原创 2017-03-29 14:46:28 · 1569 阅读 · 0 评论 -
打印这个美丽的菱形图案,简单么?(结果见链接)
#define _CRT_SECURE_NO_WARNINGS 1#include void Print(char arr1[], char arr2[], char arr3[],int str){ int mid = (str>>1)-1; int i = 0; for(i=0; i<=mid; i++) { arr1[mid+i] = arr2[mid+i];原创 2017-03-29 20:29:16 · 905 阅读 · 0 评论 -
日本某地发生了一件谋杀案,警察通过排查确定杀人凶手必为4个嫌疑犯的一个。以下为4个嫌疑犯的供词。
A说:不是我。B说:是C。C说:是D。D说:C在胡说已知3个人说了真话,1个人说的是假话。#define _CRT_SECURE_NO_WARNINGS 1#include int main(){ int A = 0; int B = 0; int C = 0; int D = 0; int killer = 0; for(killer='A'; kill原创 2017-04-01 12:24:52 · 653 阅读 · 0 评论 -
冒泡排序
冒泡排序的思想:(升序)1.比较相邻的元素。如果第一个比第二个大,就交换他们两个。2.对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。在这一点,第一次得到最后的元素应该会是最大的数。3.针对所有的元素重复以上的步骤,除了最后一个。4.持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。例如代码如下#define _C原创 2017-04-02 22:27:13 · 230 阅读 · 0 评论 -
关于数组我们必须会的的运算
Sizeof与Strlen的区别一、sizeofsizeof(...)是运算符,在头文件中typedef为unsigned int,其值在编译时即计算好了,参数可以是数组、指针、类型、对象、函数等。它的功能是:获得保证能容纳实现所建立的最大对象的字节大小。由于在编译时计算,因此sizeof不能用来返回动态分配的内存空间的大小。实际上,用sizeof来返回类型以及静态分配的对象、原创 2017-04-03 12:39:52 · 317 阅读 · 0 评论 -
三子棋
多么简单的一个游戏,实现也是如此的复杂,只想说要走的路还有很长很长..........game.h#ifndef __GAME_H__#define __GAME_H__#include #include #include #define ROWS 3#define COLS 3void init_board(char board[ROWS][COLS], int row原创 2017-04-04 10:51:19 · 352 阅读 · 0 评论 -
扫雷(通俗易懂简易版)
我们绝大部分人都玩过扫雷,玩起来真的很简单,只需要1用鼠标点一点就可以了(要赢还是需要费脑经的)但是现在自己来编写一个简易版的扫雷,发现不是那么简单的,经过了几天的编写,终于实现了属于我的简易版的扫雷,过程简单,对于我这菜鸟来说,难的部分就是怎么去实现点一次一大片就空了(这里用了递归)。接下来就是我的扫雷程序和截图先看看电脑的扫雷界面,和我的扫雷界面(发现自己的好丑)玩过扫原创 2017-04-11 15:38:20 · 2623 阅读 · 1 评论 -
可变参数的使用-printf简单实现
我们在写一个程序的时候,经常用到一些函数,例如printf函数,在我们用的时候觉得并没有什么觉得他很简单啊,我们使用的时候都没有注意过,它其实有很多种调用方法。例如:其实这就是可变参数,我们看看printf函数的原型,是这样的 我们可以看到printf函数除了有一个固定的format参数以外,其他都是可变的,因此才有了不同的调用方法原创 2017-04-23 11:20:45 · 4107 阅读 · 6 评论 -
浅谈——程序执行和函数的调用
以前写一个程序,只知道编译,在无错后就直接运行了,然后看看结果是不是自己想要的,结果对了然后就啥也不管了,如果错了就只会一行一行的看自己的代码,看看问题在哪(大多数时候,看了半天也不知道问题在哪),经过最近的学习了解,才知道一个程序的运行也不是我所想的那么简单。初步了解了一个程序的运行包括了,预处理,编译,汇编,链接等过程,这些过程下面又分了很多的子过程,要想真正的去了解他,要学习的还有很多。原创 2017-04-19 20:14:21 · 1522 阅读 · 0 评论