C语言个人见解
_WindChimes
Just be nice,always thinks twice.
展开
-
寄存器计算软件/寄存器小精灵
寄存器计算软件/寄存器小精灵.超级好用已经打包为EXE 供window使用:下载地址可以配置颜色源码贡献者:JensenHuahttps://blog.csdn.net/weixin_44030167/article/details/108027735码云https://gitee.com/JensenHua/register_sprite...原创 2022-04-13 13:27:07 · 2188 阅读 · 1 评论 -
BAT Window批量重命名
@echo offrem 启用"延缓环境变量扩充"setlocal EnableDelayedExpansionset a=0set b=0rem 循环当前目录下所有图片的文件名,支持带空格的名称for /f "delims=" %%i in ('dir /b *.bmp') do (rem 如果没有相同的文件名,则继续if not "%%~ni"=="%~n0" (if !b! LSS 10 (if !a! LSS 10 (ren "%%i" "110E000!b!000!a!.bmp.原创 2022-03-01 12:40:52 · 519 阅读 · 0 评论 -
函数指针的用法
需要一定C语言基础的 定义形式:[函数返回值类型 (* 指针变量名) (函数参数列表);] 上代码enum{//枚举 func_add = 1, func_sub ,};uint32_t (*pfunc[3])(uint32_t add1,uint32_t add2);//函数指针的数组,数组里面的每个指针都指向一个函数uint32_t func_sum(uint32_t add1,uint32_t add2){//函数 return (add1+add2);}//第一个入参 为函数原创 2021-09-02 12:05:41 · 133 阅读 · 0 评论 -
for循环运行流程/步骤
上代码自己理解一下:int main (void){ uint8_t i = 0,j = 0; for (i = 0; i < 3; i++) { printf("j = %d\r\n",j++); } printf("i = %d\r\n",i);}运行结果:j = 0j = 1j = 2i = 3注:一共运行三次[i从 0~2],i的最终值是不成立后的值,就是如上图是先判断条件再++,只是验证一下; 第一个参数 i = 0,只运行一次比如...原创 2021-08-26 10:40:03 · 285 阅读 · 0 评论 -
NOP (code)_NOP指令作用及解析
摘自:维基百科NOP (code)前言在计算机科学中,NOP、no-op 或 NOOP(发音为“no op”;no operation 的缩写)是一种机器语言指令及其汇编语言助记符、编程语言语句或不执行任何操作的计算机协议命令。机器语言指令一些计算机指令集包括一条指令,其明确目的是不改变任何程序员可访问的寄存器、状态标志或内存的状态。 通常需要明确定义的时钟周期数来执行。 在其他指令集中,没有明确的 NOP 指令,但汇编语言助记符 NOP 表示作为 NOP 的指令; 例如,在 SPARC 上.翻译 2021-08-25 10:37:42 · 23070 阅读 · 0 评论 -
设置二进制或者16/32位的某一位的值
设置某一位的值 1 | 任何值 = 1 ,任何值&0 = 0 【利用这两点进行设置值】 上代码 //获取二进制某一位的值uint8_t get_one_bit_value(uint32_t src, uint8_t bit_num){ return (uint8_t)((src >> (bit_num - 1)) & 1);}//设置二进制某一位的值uint32_t set_one_bit_value(uint32_t src, uint8_t b原创 2021-08-24 11:31:07 · 496 阅读 · 0 评论 -
获取二进制或者16/32位的某一位的值
主要是按位与,这样可以把某一位的值给算出来; 1&1 = 1; 1&0 = 0;可以看出1与上0/1都等于其本身 直接上代码//获取二进制某一位的值uint8_t get_one_bit_value(uint32_t src, uint8_t bit_num){ return (uint8_t)((src >> (bit_num - 1)) & 1);}int main(){ uint32_t test_v = 0x12345678;原创 2021-08-24 10:44:15 · 1800 阅读 · 0 评论 -
位操作/获取数组的个数
//位操作(Bit manipulation)#define BIT3 (0x01 << 3)int main(void){ static int a = 0xffff; char s[40]; itoa(a, s, 2); printf("二进制 --> %s\n", s); a |= BIT3;//第三bit位置1 itoa(a, s, 2); printf("二进制 --> %s\n", s); a &= ~BIT3;//第三bit位置0 it.原创 2021-06-23 16:52:01 · 155 阅读 · 0 评论 -
变量的定于[指针/函数指针]
答:a) 一个整型数(An integer)b) 一个指向整型数的指针(A pointer to an integer)c) 一个指向指针的的指针,它指向的指针是指向一个整型数(A pointer to a pointer to an integer)d) 一个有10个整型数的数组(An array of 10 integers)e) 一个有10个指针的数组,该指针是指向一个整型数的(An array of 10 pointers to integers)f) 一个指向有10个整型数数组的指针(.原创 2021-06-23 16:37:30 · 100 阅读 · 0 评论 -
return和break的区别
直接上代码,里面有说明//return 和 break 的区别int test_return (void){ do { printf("test_return start\r\n"); return 1;//直接返回调用函数的位置,退出此函数 printf("test_return end\r\n"); }while(0); printf("test_return end run\r\n");//不再执行}int test_break (void){ do { p原创 2021-06-23 13:26:57 · 96 阅读 · 0 评论 -
二级指针示例
//之所以定义二级指针**P,不是为了使用**P表示指向的值,而是为了使用*P来存储指针单元指向的地址。void GetMemory2(char **p, int num){ *p = (char *)malloc(num); //申请个连续空间}void main(void){ char *str = NULL; GetMemory2(&str, 100); strcpy(str, "hello\r\n"); printf(str); free(str); char *.原创 2021-06-18 15:02:15 · 336 阅读 · 0 评论 -
字符之间或者结构体之间比较
内容比较简单,直接上代码//example_3 测试结构体赋值和结构及比较大小 函数:[memcmp]struct test{ char a; int b; char c;};struct test X ={ .a = 10, .b = 20, .c = 23,};struct test Y ={ .a = 10, .b = 20, .c = 23,};struct test Z ={ .a = 10, .b = 20, .c = 24,};struc原创 2021-06-17 11:37:04 · 204 阅读 · 0 评论 -
break与continue的区别【图解】(简洁明了)
break 图解当break语句出现在一个循环内时,循环会立即终止,且程序流将继续执行紧接着循环的下一条语句 它可用于终止switch语句中的一个 case;while;do while; 如果使用的是嵌套循环(即一个循环内嵌套另一个循环),break 语句会停止执行最内层的循环,然后开始执行该块之后的下一行代码。...原创 2021-05-27 12:22:00 · 1524 阅读 · 0 评论 -
堆、栈、堆栈的区别(总结)
进程中每个线程都有自己的堆栈,这是一段线程创建时保留下的地址区域。我们的“栈内存”即在此。至于“堆”内存,我个人认为在未用new定义时,堆应该就是未“保留”未“提交”的自由空间,new的功能是在这些自由空间中保留(并提交)出一个地址范围原创 2021-05-20 16:59:18 · 2931 阅读 · 3 评论 -
assert()函数用法总结
assert宏的原型定义在<assert.h>中,其作用是如果它的条件返回错误,则终止程序执行,原型定义:#include <assert.h>void assert( int expression );assert的作用是现计算表达式 expression ,如果其值为假(即为0),那么它先向stderr打印一条出错信息,然后通过调用 abort 来终止程序运行。请看下面的程序清单badptr.c:#include <stdio.h>#include &转载 2021-05-14 15:26:27 · 221 阅读 · 0 评论 -
C语言限定符
C语言限定符关键字 使用关键字限定变量:const、volatile、restric 一般注释限定符用于限制变量的使用方式。 1. 不能改变初始化以后的 const 变量。编译器不会假设 2. volatile变量不被某些外部代理(如,一个硬件更新)改变。 3. restrict 限定的指针是访问它所指向内存的唯一方式(在特定作用域中)。 属性 1. const int joy = 101;声明创建了变量joy,它的值被初始化为101。 2. volatile unsigned i..原创 2020-11-12 17:12:56 · 997 阅读 · 0 评论 -
C语言基本类型和存储类别
基本数据类型C语言的基本数据类型分为两大类:整数类型和浮点数类型。不同的种类提供了不同的范围和精度。关键字 1. 创建基本数据类型要用到8个关键字:int、long、short、unsigned、char、float、double、signed(ANSI C)。 有符号整数 1. 有符号整数可以具有正值或负值。 2. int是所有系统中基本整数类型。 3. long或long int可储存的整数应大于或等于int可储存的最大数;long至少是32位。 4. short或short int.原创 2020-11-12 17:01:25 · 297 阅读 · 0 评论 -
C运算符解析及优先级
C运算符的优先级C语言有大量的运算符。表B.2.1按优先级从高至低的顺序列出了C运算符,并给出了其结合性。除非特别指明,否则所有运算符都是二元运算符(需要两个运算对象)。注意,一些二元运算符和一元运算符的表示符号相同,但是其优先级不同。例如,*(乘法运算符)和*(间接运算符)。表后面总结了每个运算符的用法。...原创 2020-11-12 16:27:47 · 1271 阅读 · 0 评论 -
函数原型
函数原型 函数原型是C语言的一个强有力的工具,它让编译器捕获在使用函数时可能出现的许多错误或疏漏。如果编译器没有发现这些问题,就很难觉察出来。是否必须使用函数原型?不一定。你也可以使用旧式的函数声明(即不用声明任何形参),但是这样做的弊大于利。 有一种方法可以省略函数原型却保留函数原型的优点。首先要明白,之所以使用函数原型,是为了让编译器在第1次执行到该函数之前就知道如何使用它。因此,把整个函数定义放在第1次调用该函数之前,也有相同的效果。此时,函数定义也相当于函数原型。对于较小的函数,这种原创 2020-10-27 17:37:07 · 398 阅读 · 0 评论 -
BSS的全称
BSS是是Unix链接器产生的未初始化数据段。 BSS是“Block Started by Symbol”的缩写,意为“以符号开始的块”。 BSS是Unix链接器产生的未初始化数据段。其他的段分别是包含程序代码的“text”段和包含已初始化数据的“data”段。BSS段的变量只有名称和大小却没有值。此名后来被许多文件格式使用,包括PE。“以符号开始的块”指的是编译器处理未初始化数据的地方。BSS节不包含任何数据,只是简单的维护开始和结束的地址,以便内存区能在运行时被有效地清零。BSS..转载 2020-08-13 10:14:44 · 1844 阅读 · 0 评论 -
验证哥德巴赫猜想:任何一个大于6的偶数均可表示为2个素数之和
验证哥德巴赫猜想:任何一个大于6的偶数均可表示为2个素数之和原创 2020-03-26 09:46:26 · 18339 阅读 · 6 评论 -
MQTT.fx连接aliyun阿里云的方法
本文档以MQTT.fx为例,介绍使用第三方软件以MQTT协议接入物联网平台。MQTT.fx是一款基于Eclipse Paho,使用Java语言编写的MQTT客户端工具。支持通过Topic订阅和发布消息。 前提条件 已在物联网平台控制台创建产品和设备,并获取设备证书信息(ProductKey、DeviceName和DeviceSerect)。创建产品和设备具体操作细节,请参考创建产品、单...原创 2020-03-19 17:32:51 · 362 阅读 · 0 评论 -
以下结点node定义了一个学生的信息。函数find查找并返回学号小于num,且下一节点学号不小于num的结点指针
以下结点node定义了一个学生的信息。函数find查找并返回学号小于num,且下一节点学号不小于num的结点指针。函数insert按学号递增顺序插入新学生。测试主函数从键盘输入5个学号,调用insert函数插入链表,并输出链表内容。请补全程序,完成相应的功能。原创 2020-03-18 21:00:49 · 2455 阅读 · 0 评论 -
从键盘输入一个正整数(不多于5位),计算该正整数与789之和(记为sum)
【问题描述】按程序功能要求编写程序.(1)从键盘输入一个正整数(不多于5位),计算该正整数与789之和(记为sum);(2)将整数sum各个位拆分到数组a中;(3)数组a从小到大排序;(4)将排序后的数组a组成一个值为最小的整数(记为min);(5)输出min及其位数(两数中间以空格分隔). 【样例输入】52387 【样例输出】13567 5 【样例说明】52387+789=53176,重排后得到的最小数为13567,其位数为5位.原创 2020-03-17 23:21:19 · 909 阅读 · 0 评论 -
编写程序,输入一个正整数n和n阶方阵a中的元素,如果a是上三角矩
【问题描述】编写程序,输入一个正整数n(1<=n<=6)和n阶方阵a中的元素,如果a是上三角矩阵,则输出“YES”,否则,输出“NO”。【输入形式】输入为n+1行,第一行为n后n行为n阶方阵的元素,以空格分割【输出形式】YES NO 中的一个原创 2020-03-17 17:50:46 · 12459 阅读 · 0 评论 -
建立一个通讯录的结构记录,包括姓名、年龄、电话号码
【问题描述】建立一个通讯录的结构记录,包括姓名、年龄、电话号码。输n(n<10)个朋友的信息,再按他们的年龄从大到小的顺序依次输出其信息。【输入形式】先输入n,再依次输入n个人的信息【输出形式】输出按年龄排序后的通讯录原创 2020-03-17 17:43:23 · 13637 阅读 · 0 评论 -
有n个人围成一圈,按顺序从1到n编号。从第一个人开始报数
【问题描述】有n个人围成一圈,按顺序从1到n编号。从第一个人开始报数,报数3的人退出圈子,下一个人从1开始重新报数,报数3的人退出圈子。如此循环,直到留下最后一个人。问留下来的人的编号。【输入形式】输入人数n【输出形式】输出依次退出的人的编号,和最后留下的人的编号【样例输入输出】原创 2020-03-17 17:40:46 · 10843 阅读 · 2 评论 -
if-else运用及技巧(C# 参考)
if-elseif 语句基于布尔表达式的值来识别运行哪个语句。 在下面的示例中, bool 变量 condition 已被设置为 true ,然后被签入到了 if 语句。 输出为 The variable is set to true.。bool condition = true;if (condition){ Console.WriteLine("The variable...转载 2019-06-04 17:48:39 · 753 阅读 · 0 评论 -
enum 使用规范及技巧(C# 参考)
ENUM关键字enum 关键字用于声明枚举,一种包含一组被称为枚举数列表的已命名常数的不同类型。 通常最好是直接在命名空间内定义枚举,以便命名空间中的所有类都可以同样方便地访问它。 但是,也可能会在类或结构中嵌套枚举。 默认情况下,第一个枚举数具有值 0,并且每个连续枚举数的值将增加 1。 例如,在以下枚举中, Sat 的值为 0, Sun 的值为 1, Mon 的值为 2,依次类推。...转载 2019-06-03 09:34:35 · 1959 阅读 · 0 评论 -
STM32单片机硬件I2C驱动程序(软件轮询方式)---摘自:FeoTech
感谢原作者:FeoTech 原文网址:http://feotech.com/?p=69本程序主要用于驱动STM32单片机芯片的硬件I2C寄存器,实现通过使用芯片自带的I2C寄存器进行数据的发送与接收.本例程中采用I2C寄存器查询的方式来实现数据传输,当I2C对应寄存器指定状态时方可执行下一步操作./** ************************************...转载 2018-11-12 18:03:59 · 1744 阅读 · 0 评论 -
常用软件滤波算法---摘自:FeoTech
感谢原作者: FeoTech 原文:http://feotech.com/?p=1201、限幅滤波法(又称程序判断滤波法)A、名称:限幅滤波法(又称程序判断滤波法)B、方法:根据经验判断,确定两次采样允许的最大偏差值(设为A), 每次检测到新值时判断:如果本次值与上次值之差<=A,则本次值有效, 如果本次值与上次值之差>A,则本次值无效,放弃本次值,用上次值代替本次值。C...转载 2018-11-12 17:59:47 · 413 阅读 · 0 评论