C语言
文章平均质量分 59
Mr_WangAndy
一个追求自由的Cpper!
展开
-
UNIX环境高级编程_进程间通信_信号,管道,消息队列,共享内存,信号量
记录了进程通信的实现方式,分别是:信号,有名管道,无名管道,消息队列,共享内存,信号量。原创 2023-02-07 15:51:23 · 416 阅读 · 0 评论 -
深入理解计算机系统_程序的链接过程
记录了程序从可重定位目标文件到可执行目标文件的链接过程。原创 2023-01-02 15:56:32 · 784 阅读 · 0 评论 -
深入理解计算机系统_可重定位目标文件的格式---elf格式
这篇笔记写了符号表的相关信息。原创 2022-12-31 18:14:50 · 739 阅读 · 0 评论 -
深入理解计算机系统_静态链接和动态链接以及静态库和动态库
静态库和动态库静态链接和动态链接原创 2022-12-31 10:57:42 · 920 阅读 · 0 评论 -
C/C++_IO缓存问题
这篇文件记录了关于IO缓冲的问题:数据在缓存中的执行过程,库缓存的三种方式,以及经常犯错的scanf方式。原创 2022-12-03 18:28:16 · 1124 阅读 · 0 评论 -
C语言_代码分层_结构体嵌套函数指针实现代码分层
结构体嵌套函数指针实现代码分层原创 2022-11-09 23:27:41 · 472 阅读 · 2 评论 -
C语言_函数指针数组的应用
函数数组指针原创 2022-11-06 15:03:19 · 399 阅读 · 0 评论 -
C语言_函数指针的应用_回调函数
回调函数原创 2022-11-06 11:46:54 · 135 阅读 · 0 评论 -
C语言_函数库-静态链接库和动态链接库
函数库的由来静态链接库动态链接库原创 2022-08-21 08:50:05 · 244 阅读 · 0 评论 -
C语言_编译前的预处理
编译前的预处理做的事情宏定义头文件包含注释原创 2022-08-21 08:34:06 · 607 阅读 · 0 评论 -
C语言_双创建、前插,尾插,遍历,删除
C语言实现双链表的基本操作:创建,前插,后插,遍历,删除原创 2022-07-03 10:20:06 · 80 阅读 · 1 评论 -
C语言_单链表创建、前插,尾插,遍历,删除
单链表创建,删除,前插入,后插,遍历,逆序原创 2022-07-02 22:30:24 · 596 阅读 · 0 评论 -
C语言_架构思想的初始理解_例子:分层实现计算器
Linux内核都是这样分层实现的,所以现在先学学分层的思想。用分层的思想实现一个计算器。由三个文件组成:cal.c,cal.h和framework.ccal.h 是头文件,一定要有如下开头和结尾。#ifndef __CAL_H__#define __CAL_H__#endif该文件中主要做声明。framework.c实现了cal.h业务逻辑代码。cal.c 上边好比定义好了模具,在这个文件中自定义生产原材料。cal.h#ifndef __CAL_H__#define __CAL原创 2021-07-14 01:06:44 · 126 阅读 · 0 评论 -
C语言_函数指针实例
自定义函数指针来实现C++面向对象的多态特性。这里遇到一个问题:printf行缓冲区的问题,Linux不会一个字一个字的输出,而是等待缓冲区满了,一下输出,或者遇到换行符也会将整行输出。#include <stdio.h>typedef int(*pFunc)(int ,int ); // 函数指针int add(int a,int b){ return a + b; }int sub(int a,int b){ return a - b;}int mul(int a原创 2021-07-05 22:42:53 · 201 阅读 · 0 评论 -
C语言_指针数组和数组指针
总分不清楚这个概念,本质上也是没有理解。刚才学到了,赶紧记录一下自己的想法。指针数组前边的词看成是形容词,即指针的数组,核心还是一个数组,只不过存放的指针变量。int *p[5]; 内存中开辟连续5个int类型的变量,每个元素都是一个地址。记忆方式:看符号优先级,p首先和[5]结合,就是一个数组,p[5]再和*结合,就是一个指针。最后就是指针的数组,即指针数组。(记忆方式和R进制转为2进制联想记忆,余数倒着看)。数组指针还是,前边的词作为一个形容词,即数组的指针,核心在指针。int (*p)原创 2021-06-21 10:04:20 · 79 阅读 · 0 评论 -
C语言_用宏定义实现位运算
这两天学习了C的位运算,记录一下,这个知识也是看Linux内核的基础。与或非位与& 和 逻辑与&&位与的真值表的特点是:只有1&1结果才1;1&0,0&1,0&0结果都为0.位与操作与逻辑与操作一起记住,把非0的数看成是1,0做为0,然后再进行与&运算,例如0xffff&&0x11=1;位或| 和 逻辑或||位或只有两个0位或结果为0,其余都是1,真值表:1|1=1,1|0=1,0|1=1,0|0=0两个操作原创 2021-06-09 15:11:28 · 1978 阅读 · 3 评论 -
C语言_两头堵模型
这个模型就是找两个变量,一个从字符串的开始遍历,另一个从字符串的末尾开始遍历,最后得到中间想要的信息。示例1:有一个字符串开头和结尾有N个空格,str=" 22222fffffff44444444kkkkkkkkkkk "去掉前后的空格,并返回一个新的字符串int trimSpace(char *inbuf,char *outbuf)用两头堵模型完成这个操作int trimSpace(char *inbuf,char *outbuf){ char *myinbuf = inbu原创 2020-10-06 12:24:15 · 697 阅读 · 0 评论 -
C语言_子串在母串中的次数
查找一个子串在母串中出现的次数。void search_str(char *whole_str,char *str,int *num){ char *p = whole_str; while (*p != '\0') { p = strstr(p, str); // strstr返回第一次找到出现的位置 if (p != NULL) { (*num)++; // ++ 比 * 优先级高,所以要加上(*num) p += strlen(str); } else {原创 2020-10-06 09:05:23 · 752 阅读 · 0 评论 -
C语言_数组的5种复制方法
字符串的五种复制方法原创 2020-10-06 07:44:57 · 21062 阅读 · 0 评论 -
C语言_二级指针间接赋值
这个函数的作用是,给主函数的变量间接赋值,这是二级指针的一个应用。主函数不必考虑getMem3这个子函数是怎样实现的,这个思想很重要。// 这个函数作用是,计算文件1和文件2的长度// main()中的变量,不需要知道getMem函数是怎样实现的void getMem3(char **myp1,int *mylen1,char **myp2,int *mylen2){ int ret = 0; char *tmp1, *tmp2; tmp1 = (char*)malloc(100);原创 2020-10-05 15:16:32 · 512 阅读 · 0 评论 -
C语言_全局区(常量区)
这篇文章,我打算写清楚这2件事1,内存四区包含哪四区2,分别举例说明,在执行代码时,内存四区怎样处理内存四区栈区:存放函数的参数值,局部变量的值。堆区:全局区:包括静态区,常量区(存放字符串等常量)代码区:把代码转换成二进制代码,存放二进制代码全局区的使用#define _CRT_SECURE_NO_WARNINGS #include <stdlib.h>#include <string.h>#include <stdio.h>char原创 2020-10-05 13:32:52 · 2371 阅读 · 1 评论 -
C指针_自定义数组和自定义函数
自定义数组和自定义函数数组类型的语法。int a[10];{ //定义一个数组类型。int a[10] typedef int(myTypeArray1)[10]; myTypeArray1 myArray; myArray[0] = 10;}//定义一个指针数组类型typedef int(*PTypeArray)[10];PTypeArray myPArray;myPA...原创 2019-04-24 09:17:51 · 1267 阅读 · 0 评论