c进阶篇(四)——const用法详解
c进阶篇(四)——const用法详解前言: const是c的关键词,可以修饰变量、函数形参、指针,用法相对多样。 1 修饰非指针变量 被 const 修饰的全局或局部变量,其值被初始化后不能再被修改,变量将变为 只读 。 1234567891011121314151617181920#include "stdio.h"const a = 10; //定义全局常量int Fun(){ return 5;}int main(void){ const int b = 10; //定义局部常量 const int c = Fun(); //定义局部常量,初始值为Fun返回值 a = 1; //Error: 全局常量值不能被修改 b = 1; //Error:...
c进阶篇(三)——static用法详解
c进阶篇(三)——static用法详解前言: static是c的关键词,具有静态的含义,可以用于修饰变量和函数。 1 修饰变量 static修饰对变量会产生三种作用效果。 影响变量作用域和生存期; 变量数据保持; 变量未初始化时初始值为0; 1.1 影响变量作用域和生存期1.1.1 影响变量作用域 c语言中变量可以分为局部变量和全局变量,全局变量被 static 修饰时为全局静态变量。全局静态变量只可被变量所在文件中的函数访问,对外影藏,其他文件函数无法访问。不影响局部静态变量的作用域。 main.c文件 1234int main(void){ printf("%d", Data); //Error: Data变量不存在} Test.c文件 1static int Data = 0; //全局静态变量 1.1.2 影响变量生存期 局部变量被...
自娱自乐,我的博客(十三)——Butterfly主题添加访客地图控件
自娱自乐,我的博客(十三)——Butterfly主题添加访客地图控件前言: clustrmaps可以按照访客的IP地址将访客的位置显示在地图上,是美化博客的控件。 1 创建Website Widget控件 登录 clustrmaps 注册账号登录,也可用Google账号登录。随后选择创建免费的Website Widget控件。 填写你的博客地址。 选择控件风格,有“Map widget”和Globe Widget两种风格。 2 Hexo添加Globe widget控件 找到控件的html代码。 在博客的 ./source/_data 目录下的widget.yml文件中添加一下配置,如果文件不存在则新建。 123456- class_name: user-map id_name: user-map name: 訪客地圖 icon: fas fa-heartbeat order: html: '' ...
自娱自乐,我的博客(十二)——Butterfly主题更新至v3.7.0
自娱自乐,我的博客(十二)——Butterfly主题更新至v3.7.0前言: 一年多没升级主题了,作者添加了一些新特性,我目前的Butterfly版本是v3.0.0,而最新已经到v3.7.0了。一起来看看有什么新特性吧。 1 升级npm、Node.js、Hexo Hexo依赖Nodejs和Git环境,因此建议升级Hexo之前先将这两个也升级到最新版本。由于我的Git已经是最新版本了所以不用升级。如果是Windos平台需要升级Git,在命令上中输入以下指令即可。 1git update-git-for-windows 1.1 升级Node.js和npm 在命令行中输入以下指令查看自己的Nodejs版本。 1node -v 在命令行中输入以下指令查看自己的npm版本。 1npm -v 我现在的Nodejs版本是v12.16.1,而 Nodejs...
c进阶篇(二)——编程命名规范
c进阶篇(二)——编程命名规范前言: 目前嵌入式常用的编程命名规范有驼峰命名法、匈牙利命名法、下划线命名法等。几种命名规范各有特色,但原则是开发人员之间保持统一的一套规范,如果是在现有的代码上开发,那么最好继续保持代码当前使用的编程规范,而不是盲目坚持自己的习惯。换句话说建议对几种常用命名规范都有所熟悉。有些公司是针对不同的“对象”使用不同的命名规范,比如变量名、方法名、类名等,结合多种命名规范各自的优势。写代码也有很多年了,有必要对编程命名规范进行一次整理总结。 1...
自娱自乐,我的博客(十一)——Hexo静态网页部署到Vercel
自娱自乐,我的博客(十一)——Hexo静态网页部署到Vercel前言: 之前将博客部署在Coding是因为其免费且可绑定域名,但是最近Coding开始变相收费,COS和CDN采用用量计费模式,作为一个“称职”的白嫖玩家,现在又找到一个免费好用的静态网页部署网站Vercel,也可以绑定域名。下面开始白嫖教程。 1 注册登录 登录 Vercel 官网,点击“Sign up”登录。 建议使用GitHub账号登录,这样可以方便关联GitHub上的仓库。其实Vercel和GitHub的互动性非常好,可以实现全自动部署。将静态网站提交到GitHub,让Vercel关联上部署静态网站的仓库,一旦仓库有了新的提交,Vercel会检测到并且自动完成部署,部署完成后还会发邮件通知你。 网上一些文章提到Vercel不能绑定qq邮箱,我实测是可以的,可能Vercel已经做出改进了。 2...
Git基础篇(十五)——Git远程仓库分支管理
Git基础篇(十五)——Git远程仓库分支管理前言: 前面我们讲过了在本地仓库对分支的管理和开发,那么这些分支如何提交到远程仓库吗?提交后其他开发者能获取并继续开发这些分支吗?如果使用github作为远程仓库,如何管理这些分支。 1 将指定分支推送到远程仓库 现在github一般将主分支命名为”main”,我们在本地创建一个新的分支“dev”。 1git branch dev 切换到该分支。 1git switch dev 查看仓库当前的分支,可以发现已经新建了“dev”分支,并且处于该分支下。 1git branch 为了演示我们在dev分支下进行一下修改,然后 add 这些变化。 1git add --all 在dev分支下 commit 一个版本。 1git commit -m "dev分支下提交" 讲dev分支下的版本提交推送到远程服务器。 1git push origin...
Git基础篇(十六)——将本地已有仓库提交到Github新仓库
Git基础篇(十六)——将本地已有仓库提交到Github新仓库前言: 又是我们在其他平台管理的Git项目希望移交到Github管理,也可能在本地或公司内网开发的Git项目希望提交到Github上远程管理,总之是现有项目提交到Github新仓库管理,那么请看这篇文章。 1 在Github创建一个新仓库 首先在登录Github账号,在Github上创建一个新的 Repositories 。根据需要选择为 Public 或 Private 。要注意的是不要勾选 Add a README file 、 Add .gitignore 、 Choose a license ,既然是提交已有的仓库,这些应该取决于现有的仓库。 此时在Github仓库创建的仓库还是空的仓库。创建后Github上会显示一个页面,提示你将自己的仓库提交到这个新仓库。 2 将本地仓库关联并提交到远程仓库 首先将本地仓库与Github远程仓库关联起来。关联的方式有两种, HTTPS 或 SSH...
Git基础篇(十四)——Git修正提交
Git基础篇(十四)——Git修正提交前言: 有时候git的提交存在缺陷,想要重新提交,想在最新的提交上修正这个缺陷然后重新提交,不需要为其在分支路线上生成一个节点,这时候可以使用amend指令。 1 修改最新提交的运用场景 有时候我们最新的commit发现存在某些问题,需要修改后重新提交,这时候有两种解决思路,通过 git reset HEAD^ 退回到上一个版本然后重新提交,或者通过 git commit --amend 修改最新的提交。建议使用第二种方式在修改最新的提交,这样可以保持分支上的节点尽可能的“干净”。 以下几种情况会使得我们想要去修改最新提交。 需要修改commit message; 需要删除或新增文件; 需要修改文件内容; 2...
c进阶篇(一)——移位操作详解
c进阶篇(一)——移位操作详解前言: 嵌入式编程中,很多时候都要进行比特级的操作,移位运算可以简化一些乘除操作。这篇文章带你真正了解移位操作。 1 数据的存储 对数据进行移位操作,首先要了解数据在计算机中是如何存储的。计算机关于数据涉及到原码、反码、补码三种。 1.1 原码 原码是对数字的二进制表示方法。有符号数的原码最高位是符号位,其余为数值域;无符号数则只有数值域,没有符号位。符号位用0表示非负数(0和正数),1表示复数。 由于无符号数没有符号位,因此数据域比有符号数多一位,不能表示负数但能表示更多的非负数。 表示的数值范围是偶数(2^N),比如int8_t能表示256个数,int16_t能表示65536个数等。由于实际运用中不需要-0,便人为规定将-0当做值最小的负数处理,因此int8_t表示的数值范围为-128127,int16_t表示的数值范围为-3276832767。 int8_t 原码 0 0000 0000b 5 0000...











