
C语言学习
文章平均质量分 89
江西省遂川县常驻深圳大使
南唐保大元年(943年),析泰和龙泉乡什善镇置龙泉场;南唐李璟十八年(960年)升场为县,名龙泉县;民国三年(1914年)改名,是为遂川县。
遂川县最大的镇是泉江镇; 遂川县有火车站吗?正在建渝长厦高铁遂川站
遂川三大特产金桔、板鸭、狗牯脑; 遂川县好玩的地方有源头湖公园、龙泉公园、东江源水上乐园、聚满源农庄等等;遂川县是吉安市面积最大、人口最多的县;
遂川县人口2021年遂川县人口常住户籍51万+;江西吉安遂川县;江西吉安遂川教育局官网百度自己搜
展开
-
C语言中不安全函数、安全函数
那么,您应该认为如果您的缓冲区足够大,可以处理可能的最长名称,您的程序会 安全,对吗?它可以做与 gets() 所做的同样的事情,但它接受用来限制读入字符数目的大小参数,因此,提供了一种防止缓冲区溢出的方法。遗憾的是,即使是系统调用的“安全”版本 ― 譬如,相对于 strcpy() 的 strncpy() ― 也不完全安全。然而,获得效率的代价是,C 程序员必须十分警觉,并且有极强的安全意识,才能防止他们的程序出现问题,而且即使这些,使代码不出问题也不容易。没有实际执行堆栈中的代码,只有堆中的代码。转载 2024-03-08 15:19:38 · 852 阅读 · 0 评论 -
线程安全存储以及pthread_getspecific/pthread_setspecific
最近阅读一份linux的线程代码时,看到了一套函数,pthread_getspecific/pthread_setspecific。光从名字上,完全无法理解出他们到底是干啥的,结合代码来看,也不是很清楚。于是就去百度。可是,百度来百度去,CSDN来CSDN去,反反复复找了不少资料,却始终没能完全理解透彻。感觉大家都是从同一份博客里抄来抄去的,甚至连其中的错误都照抄了,不但没能解答我的疑惑,反而还带来了其他的问题。题外话一:这里实在想吐槽一下百度的学术资料搜索能力,跟人家google比,实在是差太多了,转载 2021-09-07 16:05:39 · 575 阅读 · 0 评论 -
read/write函数实现,errno==EINTR处理
一、转1。errno!=EINTR以及读写内核函数理解errno!=EINTR注意read()如果读到数据为0,那么就表示文件结束了,如果在读的过程中遇到了中断那么会返回-1,同时置errno为EINTR。因此判断read的条件:如果read返回<=0如果==0表示文件结束,处理如果<0&&errno==EINTR表示中断,处理否则,出错...转载 2020-12-17 14:51:39 · 4606 阅读 · 0 评论 -
gcc编译参数-fPIC的一些问题
fPIC 作用于编译阶段,告诉编译器产生与位置无关代码(Position-Independent Code),则产生的代码中,没有绝对地址,全部使用相对地址,故而代码可以被加载器加载到内存的任意位置,都可以正确的执行。这正是共享库所要求的,共享库被加载时,在内存的位置不是固定的。gcc -shared -fPIC -o 1.so 1.c这里有一个-fPIC参数 PIC就是position independent code PIC使.so文件的代码段变为真正意义上的共享如果不加-fPIC,则加载转载 2020-06-23 14:40:24 · 510 阅读 · 0 评论 -
【教程】卡尔曼滤波的详解与C语言实现
一、什么是卡尔曼滤波卡尔曼滤波(Kalman filtering)是一种利用线性系统状态方程,通过系统输入输出观测数据,对系统状态进行最优估计的算法。由于观测数据中包括系统中的噪声和干扰的影响,所以最优估计也可看作是滤波过程。数据滤波是去除噪声还原真实数据的一种数据处理技术,Kalman滤波在测量方差已知的情况下能够从一系列存在测量噪声的数据中,估计动态系统的状态。由于它便于计算机编程实现,并能够对现场采集的数据进行实时的更新和处理,Kalman滤波是目前应用最为广泛的滤波方法,在通信,导航,制导与控原创 2020-06-08 12:29:15 · 17134 阅读 · 4 评论 -
【硬壳】C程序里面嵌点"机器码"玩一玩"
2、数电与程序的运行学习嵌入式的各位小伙伴,都知道有两门必修基础课程就是《数字电路》和《模拟电路》,学完以后基本上就开始学习《微机原理》了,简单说说对这三者的理解:大家都知道我们的生活在一个模拟信号的世界,比如声音什么的都是连续的信号,我们需要对信号进行处理就需要用到我们的模拟电路,而我们人类的思维更趋向于数字逻辑,因为我们需要对信号进行一个描述,就拿我们用仪器测量长度,其实我们是永远...转载 2020-04-07 11:04:31 · 1128 阅读 · 1 评论 -
对象占用字节大小 以及利用指针获取对象内部成员数据
1、通过对象指针 访问其内部char* 数据typedef struct ss{ const void* mHandle; char* mFileName;};void tests(){ ss *ssss = (ss*)malloc(sizeof(ss)); memset(ssss, 0, sizeof(ss)); ssss->mFileName = "voiadasd...原创 2018-11-02 15:56:10 · 458 阅读 · 0 评论 -
fopen 参数的意义 w wb r rb
函数fopen是一个标准c函数,其功能是打开一个文件,之后便可以进行读或写的操作.其原型是这样的:FILE *fopen( const char *filename, const char *mode ); 第一个参数是要打开文件的名字(路径),第二个参数是打开文件所用的模式.对于模式参数的”w”和”wb”,”r”和”rb”,我起初并不是很理解,按照课本上的说法,”w”是以文本的形式进行写入...转载 2018-07-13 13:05:00 · 3553 阅读 · 0 评论 -
linux c之使用mprotect检测内存访问
在Linux中,mprotect()函数可以用来修改一段指定内存区域的保护属性。函数原型如下:#include <unistd.h> #include <sys/mmap.h> int mprotect(const void *start, size_t len, int prot); mprotect()函数把自start开始的、长度为len的内存区的保护属性修改为pro...转载 2018-02-26 15:09:40 · 1050 阅读 · 0 评论 -
C语言中的左移与右移
先说左移,左移就是把一个数的所有位都向左移动若干位,在C中用int i = 1;i = i 也就是说,1的2进制是000...0001(这里1前面0的个数和int的位数有关,32位机器,gcc里有31个0),左移2位之后变成 000...0100,也就是10进制的4,所以说左移1位相当于乘以2,那么左移n位就是乘以2的n次方了(有符号数不完全适用,因为左移有可能导致符号变化,下转载 2017-12-16 09:38:54 · 1127 阅读 · 0 评论 -
Android NDK开发Crash错误定位
版权声明:本文为博主原创文章,未经博主允许不得转载。 转载请注明出处:http://blog.csdn.net/xyang81/article/details/42319789 在Android开发中,程序Crash分三种情况:未捕获的异常、ANR(Application Not Responding)和闪退(NDK引发错误)。其中未捕获的转载 2017-02-21 14:25:59 · 766 阅读 · 0 评论 -
JNI/NDK开发指南(十一)——JNI异常处理
转载请注明出处:http://blog.csdn.net/xyang81/article/details/45770551异常简介异常,显而意见就是程序在运行期间没有按照正常的程序逻辑执行,在执行过程当中出现了某种错误,导致程序崩溃。在Java中异常分为运行时异常(RuntimeException)和编译时异常,在程序中有可能运行期间发生异常的逻辑我们会用try…catch…来处理转载 2017-02-21 14:21:23 · 445 阅读 · 0 评论 -
ANSI/UTF-8/UCS2(UTF-16),以及回车换行
最近遇到一个linux 平台上invisible character (0x1d)引起的数据装载失败问题,正好借此机会整理一下字符编码的相关知识。 回车/换行:=================顾名思义,回车和换行是两个不同的控制字符: -回车(Carriage Return)即\r,ascii码13(0x0d),作用是将光标移到一行的开始位置 - 换行(Lin转载 2012-08-23 23:18:38 · 16091 阅读 · 0 评论 -
C语言常用宏定义技巧
C语言常用宏定义技巧用C语言编程,宏定义是个很重要的编程技巧。用好了宏定义,它可以增强程序的可读性、可移植性、方便性、灵活性等等。1. 防止一个头文件被重复包含: #ifndef COMDEF_H #define COMDEF_H //头文件内容 #endif当你所建的工程有多个源文件组成时,很可能会在多个文件里头包含了同一个头文件,如果借用上面的宏定义就能够避免同一个头文件被转载 2012-08-26 16:51:49 · 1717 阅读 · 0 评论 -
C语言中宏定义和函数的取舍
作者:杨硕,华清远见嵌入式学院讲师。要写好C语言,漂亮的宏定义是非常重要的。宏定义可以帮助我们防止出错,提高代码的可移植性和可读性等。在软件开发过程中,经常有一些常用或者通用的功能或者代码段,这些功能既可以写成函数,也可以封装成为宏定义。那么究竟是用函数好,还是宏定义好?这就要求我们对二者进行合理的取舍。我们来看一个例子,比较两个数或者表达式大小,首先我们把它写成宏定义:#defi转载 2012-08-26 17:57:57 · 1293 阅读 · 0 评论 -
#Pragma应用详解
在所有的预处理指令中,#pragma 指令可能是最复杂的了,它的作用是设定编译器的状态或者是指示编译器完成一些特定的动作。#pragma指令对每个编译器给出了一个方法,在保持与C和C++语言完全兼容的情况下,给出主机或操作系统专有的特征。依据定义,编译指示是机器或操作系统专有的,且对于每个编译器都是不同的。 其格式一般为: #pragma para 其中pa转载 2012-08-26 18:29:35 · 1070 阅读 · 0 评论 -
C语言-宏条件编译详解
处理过程扫描源代码,对其进行初步的转换,产生新的源代码提供给编译器。可见预处理过程先于编译器对源代码进行处理。在C 语言中,并没有任何内在的机制来完成如下一些功能:在编译时包含其他源文件、定义宏、根据条件决定编译时是否包含某些代码。要完成这些工作,就需要使用预 处理程序。尽管在目前绝大多数编译器都包含了预处理程序,但通常认为它们是独立于编译器的。预处理过程读入源代码,检查包含预处理指令的语句和转载 2012-11-27 13:12:40 · 1104 阅读 · 0 评论 -
c语言中的assert
assert宏的原型定义在中,其作用是如果它的条件返回错误,则终止程序执行,原型定义:#include void assert( int expression );assert的作用是现计算表达式 expression ,如果其值为假(即为0),那么它先向stderr打印一条出错信息,然后通过调用 abort 来终止程序运行。请看下面的程序清单badptr.c:#inclu转载 2013-12-21 21:16:47 · 1060 阅读 · 0 评论 -
C语言-编写你的第一个垃圾收集器
每当我倍感压力以及有很多事情要做的时候,我总是有这样一种反常的反应,那就是希望做一些其他的事情来摆脱这种状况。通常情况下,这些事情都是些我能够编写并实现的独立的小程序。一天早上,我几乎要被一堆事情给整疯了——我得看一本书、处理一些工作上的事情、还要准备一场Strange Loop的演讲,然后这时我突然想到:“我该写一个垃圾收集器了”。是的,我知道那一刻让我看上去有多疯狂。不过我的神经故转载 2013-12-21 21:53:32 · 1182 阅读 · 0 评论 -
用CURL实现Http请求、curl_easy_setopt-curl库的关键函数之一
函数原型:#include CURLcodecurl_easy_setopt(CURL *handle, CURLoption option, parameter);说明:此函数用来告诉 libcurl 执行什么样的动作。该函数有 3 个参数(该函数的可设置选项非常之多):第 1 个参数 handle 是由 curl_easy_init() 返回的句柄;第 2 个参转载 2016-07-18 16:01:27 · 3943 阅读 · 0 评论 -
ELF文件和BIN文件
文件的内容:1. BIN文件是 raw binary 文件,这种文件只包含机器码。2. ELF文件除了机器码外,还包含其它额外的信息,如段的加载地址,运行地址,重定位表,符号表等。所以ELF文件的体积比对应的BIN文件要大。文件的执行:1. 执行raw binary很简单,只需要将程序加载到其起始地址,就可以执行; FILE *fp = fopen("vmli转载 2017-01-18 09:56:01 · 576 阅读 · 0 评论 -
UTF-8 GBK UTF16 GB2312 之间的区别和关系
UTF-8:Unicode TransformationFormat-8bit,允许含BOM,但通常不含BOM。是用以解决国际上字符的一种多字节编码,它对英文使用8位(即一个字节),中文使用24为(三个字节)来编码。UTF-8包含全世界所有国家需要用到的字符,是国际编码,通用性强。UTF-8编码的文字可以在各国支持UTF8字符集的浏览器上显示。如,如果是UTF8编码,则在外国人的英文IE上也能显示转载 2012-08-23 23:13:10 · 1351 阅读 · 0 评论