![](https://img-blog.csdnimg.cn/20201014180756754.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
C
文章平均质量分 96
秦伟H
目标是略懂:C++,深度学习,三维重建,CV,SLAM,无人机,无人车,多传感器融合,组合导航。有事邮件:qw072117@foxmail.com huqinwei987@gmail.com
展开
-
C++中的三目运算符返回的是左值还是右值?
看到有人说“三目运算符在C语言中是右值,右值不可以被赋值。但在C++中,三目运算符是左值,左值可以赋值。”他的demo如下:#include<iostream>#include<cstdlib>int main(){ int a = 1, b = 2; // C++中的三目运算符是左值 a > b ? a : b = 10; std::cout << "a=" << a << std::e.原创 2020-07-27 14:55:30 · 1020 阅读 · 0 评论 -
静态存储区、堆、栈的内存空间分配——合理设立对照组与发散思维
很适合新手(我也是新手),涉及知识点有sizeof、strlen、堆空间、栈空间、编译原理(都很肤浅)。最初不打算写这个的,只为学习一个小知识点,但就是因为思维太发散,就把整个主题都改了——谁说只能以专业知识为主题的?至于为什么弄这么个题目,完全有感而发,个中细节,且听我细细道来~~因为很久不用,记忆模糊,被sizeof和strlen搞得稍微糊涂。现在对比一下两者区别:...原创 2014-04-10 16:21:00 · 2885 阅读 · 0 评论 -
关于do{...}while(FALSE);
今天看MFC的代码,无意中发现这样一种用法,当时觉得都原创 2014-05-19 23:41:00 · 7364 阅读 · 0 评论 -
POJ:1006--BIORHYTHM(生理周期计算)
吐槽一下POJ,很多规则弄的太蛋疼,zh原创 2014-05-21 23:10:46 · 2619 阅读 · 0 评论 -
宏定义错误导致编译出错——期待括号
网上复制的组播代码,略有问题,无头文件,服务端宏定义处发现多了个“;”——顺手删了,没关心宏定义,主要是添加头文件,编译成功。当时以为只是画蛇添足,删不删就是个习惯,对结果影响不大,没想到会是错误源头。 到了客户端,出现了编译错误。 expected ‘)’ before ‘;’ token 编译不通过,以为是圆角和字符编码的问题,因为代码是直接复制进虚拟机的原创 2014-06-20 16:58:43 · 6344 阅读 · 0 评论 -
服务器删除过期图片的策略
图片文件是单独上传的,然后客户端拿着url去更新表里数据。我也是才接手的服务器,有些代码是前任弄好的。弄着弄着想到了一个问题,之前的所有操作忽略了一个点,图片的url是update了,旧的url不就悬垂了么,那么肯定需要物理删除的,不然服务器没用的文件越来越多。初步考虑方案是查询一次旧url,本次update成功后再物理删除旧url对应文件。但是少考虑一个情况,如果因为误调原创 2015-02-05 16:20:36 · 4084 阅读 · 0 评论 -
服务器自定义协议优化——“请求JSON功能”子协议的分离
未完成,保存功能需求:移动社交应用的服务端与客户端开发,前端需要JSON返回服务器查询结果,一般JSON直接在数据库查询时候用SQL函数拼好了。一是比较省空间,JSON比XML之类的小(虽然比数据结构大);二是便于修改,只需要在json后边加key-value就能适应不(bu)断(neng)变(ming)化(que)的需求,而不用去更改结构体,更改程序逻辑。综合来讲JS原创 2015-03-14 11:12:46 · 2105 阅读 · 0 评论 -
阻塞read/write型socket网络连接弊端——缓冲区堆积——linux网络编程学习
情景:自定义协议:有头无尾,数据中可计算长度。采用阻塞read/write发送接收。测试代码:接收端主要部分截图,在read()之间加sleep即可:注意事项:如果双工,接收端发送反馈的write最好别再sleep之后,不然有干扰。(好像是共用缓冲区,暂时不测)发送端主要部分截图,write()之间间隔小于read()即可:原创 2015-06-11 11:33:34 · 3623 阅读 · 0 评论 -
多线程编程(一)——共享数据同步&线程锁
多线程共享变量会涉及到数据的安全问题。验证测试程序如下,两个线程共同对一个(非全局)变量操作,根据初始打印可知地址一样,非全局。#include #include static pthread_t thread_a_id;static pthread_t thread_b_id;void *printA(void *pA){ printf("%p!\n",原创 2016-01-20 22:45:44 · 7273 阅读 · 2 评论 -
C语言++a与a++的实现机制与操作符结合优先级
华为笔试题 1.写出判断ABCD四个表达式的是否正确, 若正确, 写出经过表达式中 a的值(3分)int a = 4;(A)a += (a++); (B) a += (++a) ;(C) (a++) += a;(D) (++a) += (a++);a = ?答:C错误,左侧不是一个有效变量,不能赋值,可改为(++a) += a改后答案依次为9,10,10,11 那么,事实究竟如何?原创 2014-04-22 19:27:35 · 9000 阅读 · 3 评论 -
Linux C存取效率对比——堆、栈、常量区
首先,堆空间是运行时动态申请的,系统维护一个关于空闲区域的链表,从小到大,找到第一个符合要求(大于等于所需空间)的结点,分配之。那么删除怎么删?怎么知道删多少?这个大小是系统记录的,直观free()、delete()就成了。如果申请的少分配的多,系统还会把多余的释放掉,免得浪费。看一小段代码:#include main(){ char a = 1;原创 2014-04-24 18:25:45 · 3694 阅读 · 0 评论 -
C语言结构体(struct)常见使用方法
注意:盗版是不会得到修正和更新的!今天复习一下struct,顺便挖掘一下以前没注意的小细节:基本定义:结构体,通俗讲就像是打包封装,把一些有共同特征(比如同属于某一类事物的属性,往往是某种业务相关属性的聚合)的变量封装在内部,通过一定方法访问修改内部变量。(因为C++和C有共通之处,但是在结构体上的某些机制又有所不同,所以后边提了一下,不喜欢可以略过)结构体定义:...原创 2014-04-14 01:51:57 · 653719 阅读 · 61 评论 -
epoll详解-epoll学习笔记
未完成。。。。。 关于结构体 typedef union epoll_data{ void *ptr; int fd; uint32_t u32; uint64_t u64;} epoll_data_t;struct epoll_event{ uint32_t events; /*原创 2015-05-28 11:08:26 · 2218 阅读 · 0 评论 -
C++引用的本质与修改引用的方法
本文不探讨罗列引用的概念,什么函数传参之类的,这些基础概念和用法很容易搜到~!本文主要探讨引用和指针在C语言的下一层——即汇编或者确切的说是伪汇编(AT&T伪汇编都一样的代码,你指望下层x86汇编还能不一样么~)——的实现过程,来摸索一下他们的特点与本质。首先,引用(Reference)在C中没有,是C++ 才有的概念~! 要用g++编译器。定义:引用就是某个目标变原创 2014-05-02 15:52:12 · 12620 阅读 · 3 评论 -
联合体(union)的使用方法及其本质
有些基础知识快淡忘了,所以有必要复习一遍,在不借助课本死知识的前提下做些推理判断,温故知新。1.联合体union的基本特性——和struct的同与不同union,中文名“联合体、共用体”,在某种程度上类似结构体struct的一种数据结构,共用体(union)和结构体(struct)同样可以包含很多种数据类型和变量。不过区别也挺明显:结构体(struct)中所有变量是“共存”的...原创 2014-04-13 14:27:08 · 203710 阅读 · 44 评论 -
C 位操作 左移32位 错误
搬砖拼接64位数字,因高32位long未先强转64,导致拼接失败,顺便发现个问题,32位变量左移32位等于原数值。C下位移操作为逻辑位移,全部左移补零后,数值应为零,结果和预期不符,遂查找症结所在。代码如下:long i = 512;i = i << 32;结果i == 512作为对比:32次i << 1结果是0short i = 512;i...原创 2017-04-28 21:28:52 · 13730 阅读 · 3 评论 -
C语言中两种不用空间开销的变量交换方式及易犯错误(局限性)
比较常见比较脑残的变量交换大家都知道,弄个临时变量temp做中转,存储一个变量的值,最后补给另一个变量。temp = i;i = j;j = temp; 这里还有两种变量交换方式,不用temp的!注意:这里说的是函数封装型的func(int *a,int*b);int i = 5;int j = 6;func(&i,&j); 第一种是...原创 2016-03-23 16:31:27 · 926 阅读 · 0 评论 -
C面试题——读程序题——汇总
int foo(int x,int n){ int val = 1; if(n > 0){ if(n%2 == 1) val *= x; val *= foo(x*x,n/2); } return val;}原创 2014-05-11 14:17:51 · 1830 阅读 · 0 评论 -
段位结构体与补码、大小端
最近在进行C语言复习,不借助课本死知识,试图直接通过某些方式进行推理验证,来得出一些听过的和没听过的、还有忘记的结论。比较浅,适合初学者看。但也有一些不容易发现的小规律能够涨姿势。1.直接上题,这也算一个面试题吧,让你解释打印结果:struct bit{ int a:3; int b:2; int c:3;};int main(){ bi原创 2014-04-15 17:22:57 · 3316 阅读 · 0 评论 -
嵌入式学习笔记(二)——初识驱动开发
Linux设备驱动的重点、难点(1)编写Linux设备驱动要求工程师有非常好的硬件基础,懂得SRAM、Flash、SDRAM、磁盘的读写方式,UART、I2C、USB等设备的接口以及轮询、中断、DMA的原理,PCI总线的工作方式以及CPU的内存管理单元(MMU)等。(2) 编写Linux设备驱动要求工程师有非常好的C语言基础,能灵活地运用C语言的结构体、指针、函数指针及内存动态申请和释放等。(3)编写Linux设备驱动要求工程师有一定的Linux内核基础,虽然并不要求工程师对内核各个部分有深入的研究原创 2013-11-03 00:16:29 · 2225 阅读 · 0 评论 -
ARM入门实践(一)----Mini6410上最简单的LED点灯裸机程序
6410有两种运行机制:一种是将程序直接从SD卡加载到内存运行,一种是将SD的镜像烧到NAND FLASH上启动,因为我的FLASH上系统有用原创 2013-11-11 15:28:31 · 5753 阅读 · 0 评论 -
浮点数在计算机中的表示
先引入一道题:Float与“零值”如何比较?肯定是不能用if(f == 0)之类的比较~!参考答案:Const float EPSINON = 0.00001;If((x >= -EPSINON)&&(x 首先,他提醒了我起名字问题,这个词儿还真没怎么用过,为了更专业,我们还是多学俩但词儿吧,那么,看看EPSINON含义——其实,他拼错了原创 2014-04-30 15:02:54 · 2816 阅读 · 0 评论 -
printf()格式控制应知小技巧
float n1 = 3.0;double n2 = 3.0;long n3 = 2000000000;long n4 = 1234567890;long n5 = 250;long n6 = 213; printf("%ld %ld %ld %ld %ld %ld\n",n1,n2,n3,n4,n5,n6);//第五个和第六个%ld对应输出是什么?别试代码,直接看原创 2012-02-05 23:23:07 · 1701 阅读 · 0 评论 -
CSDN自测题——C语言(MAY 04,2014)
字符串”\\\”ABC”\\”的长度是( )。A. 11B. 8C. 5D. 3原创 2014-05-04 16:08:29 · 1074 阅读 · 0 评论 -
C语言宏定义——一年有多少秒
那么,一年到底有多少秒?我再换个问法,每年都一样么?闰年你又怎么解决?众所周知,每四年有一个闰年,这还不是全部,逢百年的时候你必须用年份除以四百,除得开才是闰年。地球围绕太阳公转一周(即360度)的时间应该为365日6时9分10秒,即为一个恒星年。地球的某点获得两次两次直射的间隔是365日5时48分46秒(更加精确:365天5小时48分45.975456秒),即为一个回归年。一个回归年折算成小数,大概是365.2422日,400年里多出了96.88天,而按四年一个闰年算,400年里少3个闰年,即原创 2014-04-14 23:53:53 · 21135 阅读 · 7 评论 -
编程挑战——最大角度
未完成,去趟厕所回来,时间不够了原创 2014-05-03 23:01:49 · 1157 阅读 · 0 评论 -
初探Linux进程——僵尸进程和父子关系
第三列是PPID,即使不是很清楚这里边的内涵,闭着眼猜也能猜出个一二来了。可以看到僵尸进程13962确实是由父进程13961(我的可执行文件叫zombie)创造的,而13961是2427bash创造的,2427是由2422gnome-terminal,也就是我打开的终端创造的,那么终端2422的parent就是1了,1已经是init了,这大概也就是这个系统从初始化到我运行的这个东西的一个流程了吧,这个Linux还真是便于学习,一目了然,具体1,2,3等等都是干什么的就先不管了,很多进程全是直接衍生自1和2,原创 2013-11-12 17:11:16 · 5738 阅读 · 0 评论 -
什么是函数指针数组?——学习C语言基本技能之分清主语、定语
指针函数这块真是有点小纠结,前边刚乱七八糟结构,这就又指针函数,函数指针,指针数组了。有点绕口,有点小猥琐,括号来括号去,指针来,数组去的。其实就是简单记一下优先级,然后自己一边绕嘴一边往里排顺序首先,指针数组的元素是指针fp*fp;其次,指针数组是指针*fp 的数组*fp[4];//[]优先级高,数组fp[4],再结合*,数组里的每个元素是一个指针,这就是指针原创 2012-03-02 23:58:29 · 2639 阅读 · 1 评论 -
一道淘汰85%面试者的百度开发者面试题——解题、参考答案和优化思路
题目描述:依序遍历0到100闭区间内所有的正整数,如果该数字能被3整除,则输出该数字及‘*’标记;如果该数字能被5整除,则输出该数字及‘#’标记;如果该数字既能被3整除又能被5整除,则输出该数字及‘*#’标记。原创 2014-05-02 20:20:13 · 3072 阅读 · 5 评论 -
数据结构链表自测题——2014-5-5
一元稀疏多项式以循环单链表按降幂排列,结点有三个域,系数域coef ,指数域exp和指针域next;现对链表求一阶导数,链表的头指针为ha,头结点的exp域为–1。derivative(ha){ q=ha ; pa=ha->next;while(( (1) )){ if ( (2)) { ( (3)); free(pa); pa= ( (4) ); }else{ pa->coe原创 2014-05-05 19:37:03 · 6131 阅读 · 0 评论 -
Linux下C多线程编程初学
抄袭的第一个Linux下C多线程并发的程序,要用到pthread.h头文件~这还不算完,记得编译时要用-lpthread来链接libpthread.a原理很简单,利用sleep(1)隔一秒打印一次,两个线程分别打印"hello"和"world!\n"虽然写的睡一秒,但是这两个打印并不是均匀的交叉。里边用到很多现成的线程的接口,pthread_create还有pthread_join(),还原创 2012-05-01 23:40:36 · 5504 阅读 · 2 评论 -
C语言程序中为什么要使用debug宏?
本文只是提供一种思路,一种个人经验,旨在用一种很粗俗也比较接地气的方式,提示菜鸟,为什么、以及怎样在C语言程序中引入debug宏,养成并保持良好习惯。原创 2014-04-18 18:09:56 · 5081 阅读 · 0 评论 -
非线性数据结构之二叉树知识点广度测试——CSDN自测题——2014-5-5
一元稀疏多项式以循环单链表按降幂排列,结点有三个域,系数域coef ,指数域exp和指针域next;现对链表求一阶导数,链表的头指针为ha,头结点的exp域为–1。derivative(ha){ q=ha ; pa=ha->next;while(( (1) )){ if ( (2)) { ( (3)); free(pa); pa= ( (4) ); }else{ pa->coe原创 2014-05-05 19:34:53 · 2271 阅读 · 0 评论 -
一道关于大数的ACM题的讨论过程——沟通与发散思维
吹得大点叫头脑风暴,说小点就是水文一篇,技术层面很水很低端~感觉除了个人还不算全部丢失的一些数学小修养外,摸清来龙去脉,充分沟通是非常重要的。保留一份,将来没准对自己还是一个提示,一份灵感。故事还要从群友的一个问题说起:某群友遇到了一个问题,要储存非常大非常大的数,什么大整数表示法之类的说实话我也不懂,知道原则上讲,整型不同于浮点,就是躺在那里的二进制数(先不说源码补码的问题~),原创 2014-05-06 21:38:59 · 1665 阅读 · 0 评论 -
输出两字符串最大相同部分——C面试题
首先,sizeof局限于原创 2014-05-08 17:29:11 · 3674 阅读 · 0 评论 -
C++ 面试 笔试 题 笔记
进程间通信:管道和有名管道named pipe、信号signal、消息队列message queue、共享内存shared memory、信号量semaphore、套接字线程间:消息、信号量、事件。C++多线程问题一些算法C/C++程序员面试宝典百度百科有里边题目目录http://blog.csdn.net/jingxuewang110/article/de原创 2012-04-22 10:14:06 · 1204 阅读 · 0 评论