随笔分类 - C语言
摘要:知乎上回答了一个粉丝问题, 结果这兄弟又连续问了几个问题: 好吧,帮人帮到底,送佛送到西! 给你讲彻底点吧! 1. int va; 这是一个整型变量,32位CPU的话,占有32个bite 2. int *va; 这是一个整型指针变量,用于存放一个整型变量的地址, 3. int **va; 这是一个整
阅读全文
摘要:strcpy,即string copy(字符串复制)的缩写。 是C语言标准库中实现字符串拷贝的一个函数。 各大公司笔试题最喜欢考的一道题,快来看看,你会几种方法? 问:你会如何实现这个函数呢? 1 void strcpy(char *strDest, char *strSrc){ while( (*
阅读全文
摘要:@(目录) 一、问题 为啥内核有的变量没有初始化就敢直接使用? 二、分析 看上图,其中的5747行的变量nid的确没有定义,就直接使用了,这么做没有问题吗? 其实大家仔细看一下,5765行是一个宏, 到内核源码去找该宏的定义: linux-3.14\include\linux\Nodemask.h
阅读全文
摘要:strcpy,即string copy(字符串复制)的缩写。 是C语言标准库中实现字符串拷贝的一个函数。 各大公司笔试题最喜欢考的一道题,快来看看,你会几种方法? 问:你会如何实现这个函数呢? 1 void strcpy(char *strDest, char *strSrc){ while( (*
阅读全文
摘要:关于时间的文章,大家可以关注我之前的一篇文章《C语言操作时间函数time.ctime,实现定时执行某个任务小例子》 0、问题描述 粉丝想计算一个函数的执行时间。 一、问题分析 函数的执行时间的统计在嵌入式系统中会被频繁的用到,知识点很重要。 本文从两个方面来讨论类似的问题: 程序内计算一个函数的执行
阅读全文
摘要:本文详细视频讲解,已经发布到B站 https://www.bilibili.com/video/BV1uy4y1p7on/ 更多仔细,请关注公众号:一口Linux 一、摘要算法 摘要算法又称哈希算法。 它表示输入任意长度的数据,输出固定长度的数据,它的主要特征是加密过程不需要密钥,并且经过加密的数据
阅读全文
摘要:视频地址:https://www.ixigua.com/6935761378816819748 粉丝提问 粉丝问题,总结一下: 关键字static的使用方法。 要想搞清楚关键字static的使用方法,必须首先搞清楚,可执行程序段的分类以及各段在内存区的逻辑地址的映射。 一、可执行程序内存分配 1.
阅读全文
摘要:0、前言 网友提问如下: 汇总下这个网友的问题,其实就是实现一个网关程序,内容分为几块: 下位机,通过串口与上位机相连; 下位机要能够接收上位机下发的命令,并解析这些命令; 下位机能够根据这些命令配置对应的外设、读取对应的传感器的数据上传到上位机; 主程序串口操作模块:通过串口下发命令或者读取下位机
阅读全文
摘要:前言 在计算机软件领域,做出过重大贡献的神人很多,比如:《计算机程序设计艺术》(The Art of Computer Programming)一书的作者- Donald Knuth;Pascal 的作者 Anders Hejlsberg;Unix ,Go程序语言 , B程序语言,UTF-8编码,e
阅读全文
摘要:前言 状态机在实际工作开发中应用非常广泛,在刚进入公司的时候,根据公司产品做流程图的时候,发现自己经常会漏了这样或那样的状态,导致整体流程会有问题,后来知道了状态机这样的东西,发现用这幅图就可以很清晰的表达整个状态的流转。 一口君曾经做过很多网络协议模块,很多协议的开发都必须用到状态机;一个健壮的状
阅读全文
摘要:前言 状态机在实际工作开发中应用非常广泛,在刚进入公司的时候,根据公司产品做流程图的时候,发现自己经常会漏了这样或那样的状态,导致整体流程会有问题,后来知道了状态机这样的东西,发现用这幅图就可以很清晰的表达整个状态的流转。 一口君曾经做过很多网络协议模块,很多协议的开发都必须用到状态机;一个健壮的状
阅读全文
摘要:时间操作函数在实际项目开发中会经常用到,最近做项目也正好用到就正好顺便整理一下。 时间概述 由上图可知: 通过系统调用函数time()可以从内核获得一个类型为time_t的1个值,该值叫calendar时间,即从1970年1月1日的UTC时间从0时0分0妙算起到现在所经过的秒数。而该时间也用于纪念U
阅读全文
摘要:短路现象1 比如有以下表达式 a && b && c 只有a为真(非0)才需要判断b的值; 只有a和b都为真,才需要判断c的值。 举例 求最终a、b、c、d的值。 main() { int a,b,c,d; a = 0; b = 1; c = 2; d = a++ && b++ && --c; pr
阅读全文
摘要:曾经我一直以为自己C语言学的还挺好的,直到看到这几个例子。 例1 首先来看一下,大师是如何求圆周率的,一口君实在词穷,first卧槽。 #include <stdio.h> long a=10000,b=0,c=10000,d,e,f[10001],g; void main() { for(;b !
阅读全文
摘要:在Linux内核中,提供了一个用来创建双向循环链表的结构 list_head。虽然linux内核是用C语言写的,但是list_head的引入,使得内核数据结构也可以拥有面向对象的特性,通过使用操作list_head 的通用接口很容易实现代码的重用,有点类似于C++的继承机制(希望有机会写篇文章研究一
阅读全文