S3: C (高效)
文章平均质量分 57
干净的C;C犹如少林武功博大精深,从基础练起. 常用结构体 指针。
静思心远
嵌入式&&人工智能
展开
-
C学习基础
C学习基础文档文档2022精心整理的C语言学习宝藏原创 2022-03-09 23:08:37 · 147 阅读 · 0 评论 -
用struct tm与time_t来计算日期之间的间隔天数
【代码】用struct tm与time_t来计算日期之间的间隔天数。转载 2024-06-20 13:59:27 · 114 阅读 · 0 评论 -
CRC校验汇总
C转载 2024-05-07 17:13:31 · 321 阅读 · 0 评论 -
C/C++字节对齐(pack)
字节对齐原创 2023-11-27 23:40:16 · 917 阅读 · 0 评论 -
C_CPP变量命名规范V2.0
常量、宏定义和枚举一般都是所有字母大写,特别是宏定义,在不同字母之间,可以加上下划线,也可以不加。原创 2023-11-04 17:28:05 · 401 阅读 · 0 评论 -
工作中C语言高低字节转换
【代码】工作中C语言高低字节转换。原创 2023-09-23 15:59:40 · 508 阅读 · 0 评论 -
如何编写高质量代码
高质量代码原创 2023-09-21 17:39:18 · 162 阅读 · 0 评论 -
C++调用C函数
C++调用C函数C++调用C函数referenceC++调用C函数/************************test1.c***************************/#ifdef __cplusplusextern "C"{#endif //add函数定义 int add(int a,int b) { return a+b; } //sub函数定义 int sub(int a,int b) { return a-b; }#ifdef __cpluspl转载 2022-05-04 00:26:27 · 1739 阅读 · 0 评论 -
计算机的组成原理
计算机的组成原理抛砖引玉计算机的组成部分中央处理器存储器1) 内存储器(内存,Memory)2) 辅助存储器输入设备输出设备总结reference抛砖引玉可以说计算机是模仿人体的各个器官而被研制出来的。它包括相当于“大脑”的运算、控制、存储设备,相当于“眼睛”和“耳朵”的输入设备,相当于“嘴巴”和“手脚”的输出设备,以及相当于“神经”和“血管”的传输设备。将这些设备组装在一起就构成了计算机。人所做的所有活动都是由大脑控制的,比如妈妈做很好吃的红烧肉就是这样的。首先妈妈大脑中已经有了如何做红烧肉的食谱,转载 2022-03-09 23:30:19 · 2093 阅读 · 0 评论 -
C和linux内核打印
加粗样式1.C打印2.内核调试信息1.C打印#include <stdio.h>#define debug_message() (printf("%s %s() [%d]:\n",__FILE__,__func__,__LINE__),printf)int main(int argc, const char *argv[]){ debug_message(); //printf("\n"); printf("hello world\n"); return原创 2021-08-24 20:35:55 · 269 阅读 · 0 评论 -
状态机模型
状态机状态机博客来源状态机#include <stdio.h>#include <stdlib.h>#include <string.h>#define STATETRANS(n) (stateTran_##n)typedef enum { sta_origin=0, sta_running, sta_owencpu, sta_sleep_int, sta_sleep_unint}State;typedef enum{ e转载 2021-08-21 11:05:57 · 276 阅读 · 0 评论 -
段错误debug方法
段错误debug方法段错误debug方法段错误debug方法1.gdbgdb ./hellworld rbt 查看断点2.ulimit -c unlimited如果有段错误生成 coregdb ./hellworld corebt3.echo "/tmp/core-%e-%p-%t" > /proc/sys/kernel/core_patternulimit -c unlimited如果有段错误生成 coregdb ./hellworld corebt..原创 2021-08-20 18:03:44 · 209 阅读 · 0 评论 -
C语言#pragma使用方法
C语言#pragma使用方法1.总结1.总结1、#pragma用于指示编译器完成一些特定的动作2、#pragma所定义的很多指示字是编译器特有的(每种编译可能都不一样)(1) #pragma message 用于自定义编译信息(2)#pragma once 用于保证头文件只被编译一次(3)#pragama pack用于指定内存对齐(一般用在结构体)struct占用内存大小1)第一个成员起始于0偏移处2)每个成员按其类型大小和pack参数中较小的一个进行对齐——偏移地址必须能被对齐参数整除转载 2021-07-14 16:28:34 · 4902 阅读 · 0 评论 -
double ceil(double x);
ceilceilceil instance analysisceil函数名: ceil用 法: double ceil(double x);功 能: 返回大于或者等于指定表达式的最小整数 [1]头文件:math.h说明:float ceil ( float value )返回不小于 value 的下一个整数,ceil() 返回不小于value的最小整数,value 如果有小数部分则进一位。ceil() 返回的类型仍然是 float,因为 float 值的范围通常比 integer 要小.ce原创 2021-07-14 11:23:21 · 489 阅读 · 0 评论 -
C 奇偶 取位运算
C 奇偶 取位运算C 奇偶 取位运算C 奇偶 取位运算#include <stdio.h>#include <stdbool.h>//判断int类型变量奇偶bool Judge(int n){ return(n&1);//奇数返回1,偶数返回0}//取十进制整型变量a的二进制形式的第k位int GetWei(int n, int k){ int m; m = n >> k & 1; return m;原创 2021-04-24 16:30:52 · 221 阅读 · 0 评论 -
求x二进制1的个数
求x二进制1的个数求x二进制1的个数求x二进制1的个数#include <stdio.h>int function(x) { int flag = 0; while(x) { x = x&(x-1); flag ++; printf("x:%d flag:%d\n",x, flag); } return flag ;}int main(int argc, char * argv原创 2021-04-23 08:54:54 · 211 阅读 · 0 评论 -
C 字符串打印
C 字符串打印C 字符串打印C 字符串打印#include <stdio.h>void main(){ char *name = "1234567890"; printf("%s\n",name); printf("name= %p name+1= %p name+2= %p\n",name,name+1,name+2); printf("name= %s name+1= %s name+2= %s\n",name,name+1,name+2);}...原创 2021-04-16 23:59:44 · 153 阅读 · 0 评论 -
C 指针数组
C 指针数组题C 指针数组题C 指针数组题#include <stdio.h>int main(){ int a[5][5]; int (*p)[4]; p = a; printf("%d\n", &p[4][2] - &a[4][2]); return 0;}: -4原创 2021-04-16 23:20:45 · 178 阅读 · 0 评论 -
multiple definition of 问题解决方法
multiple definition of 一.multiple definition of 问题解决方法1.给每一个头文件加上条件编译:2.使用extern定义全局变量:3.使用Static修饰:一.multiple definition of 问题解决方法在编写代码时,我想让两个接口的函数从公用一个,现在分为两个来使用,但是函数的名字相同,放在两个不同的C文件中,编译后发现,在链接的时候,出现如下错误: multiple definition of `函数名’分析是因为两个函数重复定义了,我将转载 2021-02-26 14:22:05 · 16760 阅读 · 6 评论 -
用万字给面试官讲清楚了hello world
少点代码,多点头发本文已经收录至我的GitHub,欢迎大家踊跃star 和 issues。https://github.com/midou-tech/articles面试官超级喜欢问hello world问题 特别是校招,我校招碰到过3次其实很多看起来顺其自然简单的东西,背后是一套复杂的学问记得很清楚第一次面试阿里巴巴的时候,面试官上来让我写一个hello world程序当时我真的一面黑人问号的确认了三遍,面试官依旧淡定的说 是的写完就让我聊hello world,一个hello world转载 2020-12-27 20:49:58 · 317 阅读 · 0 评论 -
C语言打印“Hello World!“的N种方法
helloworld打印的N种方法1.instance analysis1.instance analysis#include <stdio.h>#include<stdlib.h>void float_helloworld(){ float a[3] = { 1143139122437582505939828736.0, 76482007234779498639230238720.0, 9.222452464e-39 }; printf("%d\n",原创 2020-12-27 20:06:50 · 7543 阅读 · 0 评论 -
MQTT-time
time1.获取当前时间2.MQTTTime.c1.获取当前时间#include <stdio.h>#include <stdlib.h>#include <string.h>#include <sys/time.h>#include <time.h>typedef unsigned long ULONGLONG;long int MQTTTime_start_clock(void){ static struct t原创 2020-12-21 20:23:12 · 807 阅读 · 0 评论 -
读文件
读文件1.instance analysis1.instance analysis#include <stdio.h>char* readfile(int* data_len, const char *filename){ char* buffer = NULL; long filesize = 0L; FILE* infile = fopen(filename, "rb"); if (infile == NULL)原创 2020-12-21 19:59:11 · 271 阅读 · 1 评论 -
读写文件IO
要求:先写后读文件,时间:2分钟上代码#include <iostream>using namespace std;static int printHex(char *srcdata, int size){ if(srcdata == nullptr) { printf("return -1...\n"); return -1; } if(size <= 0) { printf("原创 2020-08-07 08:48:15 · 243 阅读 · 0 评论 -
计算模块耗时
计算CPU耗时测试1.通过时间差计算CPU耗时1.通过时间差计算CPU耗时#include<stdio.h>#include <stdlib.h>#include <time.h>#include <sys/time.h>void start_time_api(struct timeval *start_time){ gettimeofday(start_time,NULL);}long long int finish_time_api原创 2020-12-05 15:52:56 · 333 阅读 · 0 评论 -
Linux下使用ntpdate命令进行时间同步
最近做了一个功能(Java),默认查询当天开始时间(00:00:00)到当前时间节点的数据,问题就出现在当前时间节点上,发现两台服务器的时间有误差,然后把获取当前时间的代码去掉(new Date().toLocaleString()),再进行部署测试,发现可以了,但觉得这不是很好的一种解决方式,搜索一下,发现可以用ntpdate命令来进行时间同步。进入liunx命令控制台,输入date命令;输出如下:若要更新时间,使用 date -s hh:mm:ss 即可若要和Internet时间同步,使用n转载 2020-11-10 09:02:32 · 1883 阅读 · 0 评论 -
学习C基础这一篇就够了
学习C转载 2020-11-08 21:39:51 · 340 阅读 · 0 评论 -
内存分析
内存分析1.内存分析转载 2020-10-31 00:22:50 · 145 阅读 · 0 评论 -
C面试之GetMemory问题
题目一:[cpp]view plaincopyvoidGetMemory(char*p){ p=(char*)malloc(100);}voidTest(void){ char*str=NULL; GetMemory(str);原创 2017-04-25 22:20:47 · 472 阅读 · 0 评论 -
C实现大小端判断
大端小端的概念(以下概念来自网络)端模式(Endian)的这个词出自Jonathan Swift书写的《格列佛游记》。这本书根据将鸡蛋敲开的方法不同将所有的人分为两类,从圆头开始将鸡蛋敲开的人被归为Big Endian,从尖头开始将鸡蛋敲开的人被归为Littile Endian。小人国的内战就源于吃鸡蛋时是究竟从大头(Big-Endian)敲开还是从小头(Little-Endian)敲开。在计算机业Big Endian和Little Endian也几乎引起一场战争。在计算机业界,Endian表示数据在存原创 2020-09-02 08:33:42 · 957 阅读 · 0 评论 -
ASCII码
ACSII码表1 码表1 码表原创 2020-10-21 17:08:42 · 296 阅读 · 0 评论 -
C数据类型
原创 2020-10-11 16:00:27 · 120 阅读 · 0 评论 -
字符串:如何取出xml文件
要求:不管目录如何变化,取出20190625172036.xmlhttp://192.168.1.111:40006/xml/20190625172036.xmlhttp://192.168.1.111:40006/xml/1D/20190625172036.xml#include <string.h>#include <stdio.h>void get_xml(const char *src_data){ char xml_data[256] = .原创 2020-08-31 12:25:50 · 394 阅读 · 0 评论 -
C语言变长数组(柔性数组) struct中char data[0]的用法
今天在看代码中遇到一个结构中包含char data[0],第一次见到时感觉很奇怪,数组的长度怎么可以为零呢?于是上网搜索一下这样的用法的目的,发现在linux内核中,结构体中经常用到data[0]。这样设计的目的是让数组长度是可变的,根据需要进行分配。方便操作,节省空间。data[0]结构typedef struct Data{ int nLen; char data[0];}Data_t;#include <stdio.h>typedef struct Dat原创 2020-09-06 22:30:24 · 1275 阅读 · 0 评论 -
函数指针的调用
#include #include #include void test(int);int main(){void (*fp)(int);fp=test;(*fp)(9); fp(9); return 0;}void test(int a){printf( "%d\n", a );原创 2017-01-23 09:59:24 · 410 阅读 · 0 评论 -
union 实现char转float
//union内存共享地址实现,较好#include <iostream>#include <stdlib.h>#include <string.h>using namespace std;union CharFloat{ unsigned char str[4]; float value;};int main(void){ union CharFloat F; F.value = 0.0; F.str[0.原创 2020-07-16 17:22:19 · 161 阅读 · 0 评论 -
让程序崩溃后生成Core Dump
在Linux下,程序崩溃是很头疼的事情(其实Windows更是如此)。我们可以生成core dump文件,并用gdb重现崩溃时的场景。ulimit设置core dump开关和大小 1 ulimit-cunlimited 测试代码: 1 2 3 4 5 6 7 8 9 10 11 #include <stdio.h>...转载 2020-07-16 13:24:06 · 962 阅读 · 0 评论 -
随机数生成非唯一ID
很多朋友经常用srand/rand产生随机数, 其实这种随机性并不好, 容易遭受攻击(很多时候, 也满足不了需求)。 在本文中, 我们来简要介绍一下利用Linux的/dev/urandom文件产生较好的随机数, 直接上代码吧:[cpp]view plaincopy#include#includeintm原创 2017-02-28 16:04:50 · 1072 阅读 · 0 评论