
C
文章平均质量分 59
C语言基本概念与基本示例课题
生活需要深度
这个作者很懒,什么都没留下…
展开
-
float32和float16互转(C语言实现)
【代码】float32和float16互转(C语言实现)原创 2024-03-19 16:04:33 · 654 阅读 · 0 评论 -
printf表格
lld,ll,llu,llx,这几个都是输出64位的,d,lx,ld,,lu,这几个都是输出32位的。hd,hx,hu,这几个都是输出16位数据的,hhd,hhx,hhu,这几个都是输出8位的,原创 2022-10-21 15:29:59 · 330 阅读 · 0 评论 -
两次碰到编译错误: crosses initialization of...
解决办法是在case语句中不要定义变量,在switch之前定义。1. switch的case中有定义变量。在跳转之前进行变量定义,注意goto语句位置。2. goto跳过了变量的定义。原创 2022-10-08 14:09:07 · 1628 阅读 · 0 评论 -
Linux高精度struct timespec和struct timeval
一般由函数int gettimeofday(struct timeval *tv, struct timezone *tz)获取系统的时间。struct timeval有两个成员,一个是秒,一个是微秒, 所以最高精确度是微秒。CLOCK_PROCESS_CPUTIME_ID 本进程运行时间。CLOCK_THREAD_CPUTIME_ID 本线程运行时间。原创 2022-09-13 17:20:28 · 686 阅读 · 0 评论 -
代码段性能分析与精确睡眠
4. 最简单的是提高线程的优先级别,那么在就绪时更可能被调度,当然不是一定,他很难竞争过内核线程。3. 但如果此时就绪的线程多于1个(一般是这样),它不一定会选中这个线程。1. 使用VxWorks这样的实时系统,这样可以达到微秒级。3. 就是做个内核线程了(我曾经做过驱动程序,这是可取的)。和硬件中断也做不到这点,因为cpu在做某些底层操作时可能关中断。2. 使用软中断也不错,关中断的时间毕竟不多,也不长。不知楼主对精度要求有多高,下面是几种不同的替代方案。为什么不适用sleep函数。原创 2022-09-02 14:31:28 · 133 阅读 · 0 评论 -
C/C++内存对齐
目录一、什么是内存对齐二、内存对齐的方式1、 采用#pragma pack(n)来对齐(1)指定一字节对齐#pragma pack(1)(2)指定两个字节对齐#pragma pack(2)2、结构体的对齐方式一、什么是内存对齐 首先我们先来了解一下为什么需要内存对齐,内存对齐的好处在哪里? 我们都知道在32位计算机中,int类型占据4个字节,double占据8个字节,char占据1个字节。下面代码void main(){ double Ser_double; int S原创 2022-08-13 10:57:12 · 307 阅读 · 0 评论 -
系统调用、POSIX、C库、系统命令和内核函数
大部分介绍Linux内核的书籍都没有仔细说明系统调用,这应该算是一个失误。内核发展到现在,我们实际需要的系统调用现在已经十分完美,从这个意义上来说,再耗费宝贵的时间去研究系统调用的实现是毫无意义的事情。然而,对于希望能够对内核有更深理解的我们来说,仔细研究少量系统调用仍是十分值得的。这样就有机会初步了解一些概念,并可以趁机详细了解一下内核编程的特点,就像系统调用本身在应用程序和内核间的桥梁作用一样,学习并理解它也是我们走向内核的一个很好的过渡。5.1 系统调用概述一个稳定运行的Linux操作系统原创 2022-05-07 17:23:54 · 2474 阅读 · 1 评论 -
操作系统标准接口设计POSIX
POSIX表示可移植操作系统接口(Portable Operating System Interface of UNIX,缩写为 POSIX ),POSIX标准定义了操作系统应该为应用程序提供的接口标准,是IEEE为要在各种UNIX操作系统上运行的软件而定义的一系列API标准的总称,其正式称呼为IEEE 1003,而国际标准名称为ISO/IEC 9945。操作系统标准-POSIX--------------------------------------------------------------原创 2022-05-07 16:40:54 · 4287 阅读 · 0 评论 -
direct.h头文件POSIX标准
是POSIX.1标准定义的unix类目录操作的头文件,包含了许多UNIX系统服务的函数原型,例如opendir()函数、readdir()函数。chdir()改变当前目录的函数原形:int chdir(const char *path)功能:把由path指定的目录改为当前目录。path参数中可以指定驱动器号,如“a:\\ddd”, 但只是改变该驱动器上的当前目录,对当前活动驱动器上的当前目录无影响。返回值:0(成功);-1(失败)头文件:dir.h=======================原创 2022-05-07 16:35:05 · 1089 阅读 · 0 评论 -
bin文件读写 - C/C++
本文介绍一下 C 和 C++ 读取和保存 bin 文件的方法。 bin 文件的存取在调试网络推理定位问题的时候可能会经常用到,如在这个框架里网络输出和预期对不上,经常需要把这个网络里的前处理输出、网络推理输出搬到另外的框架里走一遍,来确定是前处理有问题,还是网络推理有问题,还是后处理有问题。这里分享一下 C 语言和 C++ 读取和保存特征数据为 bin 文件的方法。其实大部分情况可以用 C++ 搞定,但如 darknet 这种纯 C 框架可能就需要用 C 实现。文章目录1、C 读取和保存 bin.原创 2022-05-07 15:31:15 · 12744 阅读 · 0 评论 -
unistd.h头文件POSIX标准
C语⾔中access_access函数的使⽤实例详原创 2022-05-07 15:29:06 · 2858 阅读 · 0 评论 -
大小端,字节序,位序,字节对齐,位域对齐
测试用源代码:#include<stdio.h>#include<string.h>#if 1struct Test{ unsigned short a:2; unsigned short b:3; unsigned short c:5; unsigned short d:8;};#elsestruct Test{ unsigned char a:2; unsigned char b:3; unsigned c...原创 2022-05-06 16:52:19 · 491 阅读 · 0 评论 -
时间编程ctime - C/C++
c++ time函数_C++的日期和时间函数C++ 标准库没有提供所谓的日期类型。C++ 继承了 C 语言用于日期和时间操作的结构和函数。为了使用日期和时间相关的函数和结构,需要在 C++ 程序中引用 <ctime>头文件。有四个与时间相关的类型:clock_t、time_t、size_t 和tm。类型 clock_t、size_t 和 time_t 能够把系统时间和日期表示为某种整数。结构类型 tm 把日期和时间以 C 结构的形式保存,tm 结构的定义如下:#ifndef _TM原创 2022-05-05 17:54:56 · 4150 阅读 · 0 评论 -
进制、字节序
1. 进制现在有一个苹果,问不同国家的人其数量是多少?中国人:一,英国人:one。虽然答案不同,但是所表示的实际内容都是数量1。2. 字节序原创 2022-03-04 08:24:36 · 135 阅读 · 0 评论 -
C/C++ 异常处理(三)
标准库中异常处理累的形式异常处理类实例:#ifndef _ARRAY_H_#define _ARRAY_H_#include <stdexcept>using namespace std;template< typename T, int N >class Array{ T m_array[N];public: int length() const; bool set(int index, T value); bo.原创 2022-02-21 15:04:02 · 146 阅读 · 0 评论 -
C/C++ 异常处理(一)
【C++】异常简述(一):C语言中的异常处理机制 人的一生会遇到很多大起大落,尤其是程序员. 程序员写好的程序,论其消亡形式无非三种:无疾而终、自杀、他杀. 当然作为一名程序员,最乐意看到自己写的程序能够无疾而终,因此尽快的学习异常处理机制是非常重要的! 使自己的程序在遇到错误时能够克服错误,更健壮,而不是遇到错误就愤愤自杀. 因此,在简述C++的异常机制之前,本文先来简述一下C语言中的异常处理机制. 在C语言中,传统的错误处理方式有如下几种:1.直接终止程序(自杀)原创 2021-11-16 14:56:01 · 582 阅读 · 0 评论 -
C/C++ 异常处理(二)
问题:1、错误处理的方法有哪些?2、使用函数返回值还是抛出异常?3、PHP 原框架下的异常处理机制是怎样的?4、PHP Yii框架下的错误处理方案是怎样的?有什么参考意义?错误处理的方法有哪些?函数返回值:既return true|false,数组,对象 等使用成员变量保存错误信息:在对象内部预设一个 errors变量(可能更多的时候是一个数组),把内部处理的报错信息暂存起来,最后使用getErrors函数获取错误信息。抛出异常触发事件:需要框架支持。暂时只想到这么多了,盼指正!使用原创 2021-11-16 14:51:54 · 752 阅读 · 0 评论 -
函数 C/C++
函数的前向声明中提供了参数的默认值后,在函数的定义中就没有必要提供参数的默认值了。参数的默认值必须在函数声明中指定问题: 函数定义中是否可以出现参数的默认值?当函数声明和定义中的参数默认值不同时会发生什么?因此,在定义的时候不给出默认值就可以了。只在声明的时候给出默认值。如果在声明时不给默认参数,而是在定义时给默认参数,编译时编译器会报错。C++要提供函数占位参数这种特性,这是为了兼容C程序中不规范的写法:兼容C语言中不规范的写法例如:C语言中定义了int f(),调.原创 2022-02-06 14:40:22 · 448 阅读 · 0 评论 -
内联函数 C/C++
1. 内联函数基本概念 在C++中不推荐使用#define对变量或者某个常量进行定义,这样违背了C++的空间隔离特性,推荐使用const替代需要define的地方。那么对于define定义的代码片段怎么处理呢?C++中推荐使用内联函数替代宏代码片段。C++编译器直接将函数体插入到函数调用的地方,内联函数没有普通函数调用时的额外开销(压栈、跳转、返回),C++编译器不一定满足函数的内联请求。内联函数具有普通函数的特征,参数检查,返回类型等。#inclu......原创 2022-01-27 20:22:04 · 2052 阅读 · 1 评论 -
大小字节序 C、C++
基本的大小字节序原创 2022-01-24 16:38:35 · 407 阅读 · 0 评论 -
递归函数分析
C 数组允许定义可存储相同类型数据项的变量,结构是 C 编程中另一种用户自定义的可用的数据类型,它允许您存储不同类型的数据项。结构用于表示一条记录,假设您想要跟踪图书馆中书本的动态,您可能需要跟踪每本书的下列属性:柔性数组即数组大小待定的数组(2)C语言中可以由结构体产生柔性数组(3)C语言中结构体的最后一个元素可以是大小未知的数组struct SoftArray{ int len; int array[]; //array仅是一个待使用的标识符。与指针不同,编译器原创 2022-01-22 16:23:56 · 212 阅读 · 0 评论 -
C sizeof简介
xcv原创 2022-01-22 15:02:32 · 485 阅读 · 0 评论 -
<cstdio> stdio.h头文件
标准库类结果说明#include <stdio.h>/* run this program using the console pauser or add your own getch, system("pause") or input loop */int main(int argc, char** argv) { FILE* pFile = fopen("erichao.txt", "a"); fpos_t pos; fgetpos(pFile, &pos原创 2022-01-21 15:53:08 · 1341 阅读 · 0 评论 -
C 多维数组与指针
C环境设置本地环境设置如果您想要设置 C 语言环境,您需要确保电脑上有以下两款可用的软件,文本编辑器和 C 编译器。文本编辑器这将用于输入您的程序。文本编辑器包括 Windows Notepad、OS Edit command、Brief、Epsilon、EMACS 和 vim/vi。文本编辑器的名称和版本在不同的操作系统上可能会有所不同。例如,Notepad 通常用于 Windows 操作系统上,vim/vi 可用于 Linux/UNIX 操作系统上。通过编辑器创建的文件通常称为.原创 2022-01-10 10:04:22 · 112 阅读 · 0 评论 -
柔性数组 C/C++/Java
众所周知, GNU/GCC 在标准的 C/C++ 基础上做了有实用性的扩展, 零长度数组(Arrays of Length Zero) 就是其中一个知名的扩展.多数情况下, 其应用在变长数组中, 其定义如下struct Packet{ int state; int len; char cData[0]; //这里的0长结构体就为变长结构体提供了非常好的支持};123456首先对 0长度数组, 也叫柔性数组 做一个解释 :用途 : 长度为0的数组的主要用途...原创 2022-01-16 11:42:17 · 577 阅读 · 0 评论 -
指针和数组 (二) - 本质 C/C++
变量的回顾 程序中的变量只是一段存储空间的别名,那么是不是必须通过这个别名才能使用这段内存空间呢? 2.*号的意义 (1)在指针声明时,*号表示所声明的变量为指针(2)在指针使用时,*号表示取指针所指向的内存空间中的值。 ①*号类似一把钥匙,通过这把钥匙可以打开内存,读取内存中的值。 ②变量p保存着变量i的内存地址,即p==&i, *p==i【实例分析】指针使用示例复制代码#include <stdio.h...原创 2022-01-22 17:14:00 · 203 阅读 · 0 评论 -
数组与指针(一) - 基本概念 C/C++
C 数组(1)数组是相同类型的变量的有序集合(2)数组在一片连续的内存空间中存储元素(3)数组元素的个数可以显示或隐式指定C 语言支持数组数据结构,它可以存储一个固定大小的相同类型元素的顺序集合。数组是用来存储一系列数据,但它往往被认为是一系列相同类型的变量。数组的声明并不是声明一个个单独的变量,比如 runoob0、runoob1、...、runoob99,而是声明一个数组变量,比如 runoob,然后使用 runoob[0]、runoob[1]、...、runoob[99]原创 2022-01-22 17:09:15 · 780 阅读 · 0 评论 -
C 函数
xcv原创 2022-01-15 17:08:45 · 239 阅读 · 0 评论 -
C/C++逻辑控制表达式
xcv原创 2022-01-11 14:12:38 · 883 阅读 · 0 评论 -
数组与指针 (三) 多维 C/C++
三目运算符 (1)三目运算符(a?b:c)可以作为逻辑运算的载体(2)规则:当a的值为真时,返回变量b的值(而不是变量本身);否则返回c的值。【实例分析】三目运算符初探复制代码#include <stdio.h>int main(){ int a = 1; int b = 2; int c = 0; c = a < b ? a : b; //(a<b)?a:b; //以下代码试...原创 2022-01-22 16:35:12 · 1011 阅读 · 0 评论 -
C/C++ 运算符
C运算符运算符是一种告诉编译器执行特定的数学或逻辑操作的符号。C 语言内置了丰富的运算符,并提供了以下类型的运算符:算术运算符 关系运算符 逻辑运算符 位运算符 赋值运算符 杂项运算符本章将逐一介绍算术运算符、关系运算符、逻辑运算符、位运算符、赋值运算符和其他运算符。算术运算符下表显示了 C 语言支持的所有算术运算符。假设变量A的值为 10,变量B的值为 20,则:运算符 描述 实例 + 把两个操作数相加 A + B 将得到 30 -...原创 2022-01-11 13:44:06 · 2288 阅读 · 0 评论 -
C/C++ 字符与字符串
在C语言中,string 是定义一个字符串,存储的是一段如“abcd”的数据,而且最后还有一个结束符'\0';char 是定义一个字符,存储一个字符,占一个字节。在C++中,string有两种,一种是字符串char[],另外一种是封装好的字符串类,要区别理解。例如'a'是char, "a"是char string,这两者都是普通的字符和字符串,和C语言中没什么不同值得注意的是后者包含两个字符,末尾有一个隐身的'\0'而 string str = "a" 是C++ 封装好的string。C++中的ch原创 2022-01-11 13:34:29 · 7289 阅读 · 3 评论 -
C/C++ 常量
常量是固定值,在程序执行期间不会改变,这些固定值又叫做字面量。常量可以是任何的基本数据类型,比如整数常量、浮点常量、或者字符串字面值,也有枚举常量。整数常量可以是十进制、八进制或十六进制的常量。前缀指定基数:0x 或 0X 表示十六进制,0 表示八进制,不带前缀则默认表示十进制。整数常量也可以带一个后缀,后缀是 U 和 L 的组合,U 表示无符号整数(unsigned),L 表示长整数(long)。后缀可以是大写,也可以是小写,U 和 L 的顺序任意。下面列举几个整数常量的实例:212原创 2022-01-11 13:32:13 · 143 阅读 · 0 评论 -
Const关键字 C/C++/Java
const关键字是永恒不变的意思,用它修饰的关键字只具有度的特性,没有办法进行写操作。const常变量的出现可以很好的增加程序的健壮性,防止一些不必要的变量被错误修改引发的程序问题。在面向的C++中,如果是需要使用#define定义的常数类型量,一般情况下都用const替代,主要原因是define关键字破坏了面向对象域和类型的封装的特性,打破了访问界限。...原创 2022-01-16 14:45:30 · 4058 阅读 · 0 评论 -
Static关键字 C/C+/Java
1. 什么是static?static 是 C/C++ 中很常用的修饰符,它被用来控制变量的存储方式和可见性。1.1 static 的引入我们知道在函数内部定义的变量,当程序执行到它的定义处时,编译器为它在栈上分配空间,函数在栈上分配的空间在此函数执行结束时会释放掉,这样就产生了一个问题: 如果想将函数中此变量的值保存至下一次调用时,如何实现? 最容易想到的方法是定义为全局的变量,但定义一个全局变量有许多缺点,最明显的缺点是破坏了此变量的访问范围(使得在此函数中定义的变量,不仅仅只受此函数控制)原创 2022-01-11 08:51:07 · 730 阅读 · 0 评论 -
volatile关键字 C/C++
1.为什么用volatile? C/C++ 中的 volatile 关键字和 const 对应,用来修饰变量,通常用于建立语言级别的memory barrier。这是 BS 在 "The C++ Programming Language" 对 volatile 修饰词的说明:A volatile specifier is a hint to a compiler that an object may change its value in ways not specified by th...原创 2022-01-16 17:04:22 · 1991 阅读 · 0 评论 -
extern关键字 C/C++/Java
基本解释:extern可以置于变量或者函数前,以标示变量或者函数的定义在别的文件中,提示编译器遇到此变量和函数时在其他模块中寻找其定义。此外extern也可用来进行链接指定。 也就是说extern有两个作用,第一个,当它与"C"一起连用时,如: extern "C" void fun(int a, int b);则告诉编译器在编译fun这个函数名时按着C的规则去翻译相应的函数名而不是C++的,C++的规则在翻译这个函数名时会把fun这个名字变得面目全非,可能是fun@aBc_int_int#%...原创 2022-01-15 17:25:55 · 344 阅读 · 0 评论 -
C 变量存储类
存储类定义 C 程序中变量/函数的范围(可见性)和生命周期。这些说明符放置在它们所修饰的类型之前。下面列出 C 程序中可用的存储类:auto register static externauto 存储类auto存储类是所有局部变量默认的存储类。{ int mount; auto int month;}上面的实例定义了两个带有相同存储类的变量,auto 只能用在函数内,即 auto 只能修饰局部变量。register 存储类register存储类用于定义存储..原创 2022-01-11 14:03:57 · 119 阅读 · 0 评论 -
C/C++ 变量、结构体、数组存储本质
C语言中变量是程序可操作性的存储区域的名称,每个变量类型决定了变量的存储空间大小和布局。类型 描述 char 通常是一个字节(八位), 这是一个整数类型。 int 整型,4 个字节,取值范围 -2147483648 到 2147483647。 float 单精度浮点值。单精度是这样的格式,1位符号,8位指数,23位小数。 double 双精度浮点值。双精度是1位符号,11位指数,52位小数。 v原创 2022-01-11 08:45:39 · 1225 阅读 · 0 评论 -
C/C++ 数据类型
在C语言中,数据类型指的是用于声明不同类型变量或者函数的一个广泛的系统或者抽象。变量类型决定了变量存储占用的空间,以及如何解析存储的位模式。C中可以分为以下几种数据类型:序号 类型与描述 1 基本类型: 它们是算术类型,包括两种类型:整数类型和浮点类型。 2 枚举类型: 它们也是算术类型,被用来定义在程序中只能赋予其一定的离散整数值的变量。 3 void 类型: 类型说明符void表明没有可用的值。 4 派生类型: 它们包括:指针..原创 2022-01-10 14:18:14 · 3746 阅读 · 0 评论