
C/C++
文章平均质量分 60
Quartz010
不予置评
展开
-
边界问题
边界计算是这样吗?现在假想有一个数组有十个元素,那么其下标允许的范围是多少呢? 在C中,其下标是0~9的数 所以我们知道在n个元素的数组中,没有下标为n的元素,其下标为0~(n-1)边界的困惑int a[10];for(int i=1; i <= 10; i++) a[i]=0;这样的验证的结果,细细想想,必然是下标越界了,可是 一切又看起来这么合理这是优势?原创 2016-08-31 18:15:13 · 1163 阅读 · 0 评论 -
C语言函数参数压栈顺序为何是从右到左?
#转载自:http://blog.youkuaiyun.com/jiange_zh上学期学习了汇编语言,并在操作系统实验中使用了汇编+C语言混合编程,中间也了解了一些C语言与汇编语言的对应关系。 由于汇编语言是底层的编程语言,各种函数参数都要直接控制栈进行存取,在混合编程中,要用汇编来调用C函数,当然就要知道参数的压栈情况了。 当知道C函数的参数压栈顺序是从右到左时,我觉得很奇怪,因为大多数情况下,人转载 2017-04-03 00:35:57 · 1551 阅读 · 0 评论 -
linux下的二进制文件的编辑和查看
一、在Linux下查看二进制文件的软件:xxd (2进制)hexdump (16进制)二、编辑:1、biew2、hexedit3、vimVim 来编辑二进制文件。Vim 本非为此而设计的,因而有若干局限。但你能读 取一个文件,改动一个字符,然后把它存盘。结果是你的文件就只有那一个字符给改了, 其它的就跟原来那个一模一样。 要保证 Vim 别把它那些聪明的窍门用错地方,启动 Vim 时加转载 2017-04-03 01:11:41 · 8186 阅读 · 0 评论 -
VC++动态链接库(DLL)编程深入浅出
深度好文作为入门理解非常不错1.概论 先来阐述一下DLL(Dynamic Linkable Library)的概念,你可以简单的把DLL看成一种仓库,它提供给你一些可以直接拿来用的变量、函数或类。在仓库的发展史上经历了“无库-静态链接库-动态链接库”的时代。 静态链接库与动态链接库都是共享代码的方式,如果采用静态链接库,则无论你愿不愿意,lib中的指令都被直接包含在最终转载 2017-07-19 11:23:19 · 522 阅读 · 0 评论 -
Dll入口函数参数详解
DLL程序入口点函数:DllMain,注意:大小写是区别的(仅导出资源的DLL可以没有DllMain函数)。函数原型:BOOL APIENTRY DllMain( HMODULE hModule, DWORD ul_reason_for_call, LPVOID lpReserved转载 2017-07-19 16:41:49 · 528 阅读 · 0 评论 -
C++编程问题汇总(方便日后查阅)
解决“错误 D8016 “/ZI”和“/Gy-”命令行选项不兼容 ”问题 http://blog.youkuaiyun.com/lyj_viviani/article/details/51487877sds原创 2017-07-19 11:21:45 · 339 阅读 · 0 评论 -
《DLL木马进程内幕大揭秘》
如果是位经常玩“马马”的朋友,那么一般情况下都会或多或少掌握一些木马的特性,然而,很多朋友还是不知道“DLL木马”是什么东东。那到底什么是“DLL木马”呢?它与一般的木马又有什么不同?带着这些疑问,一起开始这次揭密之旅吧! 一、追根溯源从DLL说起 要了解什么是“DLL木马”,就必须知道“DLL”是什么意思!说起DLL,就不能不涉及到久远的DOS时代。在DOS大行其道的时代,写程序是一件繁琐的事转载 2017-07-19 22:32:36 · 376 阅读 · 0 评论 -
MFC消息机制
@转载理由 文章对MFC的消息机制讲解不错 主要的看到了一些常见的映射函数何谓消息、消息处理函数、消息映射?消息简单的说就是指通过输入设备向程序发出指令要执行某个操作。具体的某个操作是你的一系列代码。称为消息处理函数。在SDK中消息其实非常容易理解,当窗口建立后便会有一个函数(窗口处理函数)开始执行一个消息循环,我们还可以清楚的看到消息处理的脉络。一个switch ca转载 2017-07-24 17:21:27 · 975 阅读 · 0 评论 -
树莓派 QT 编程下的硬件中断
这个标题可以有点别扭 表意不明 本文主要记录了 这个遇到的问题 环境描述 : 在qt中想使用gpio 来用作中断控制 一个TabWidget 的翻页 这个是WiringPi库中的中断注册函数 后面可以看到是个函数指针 直接把函数名传进去就好,int wiringPiISR (int pin, int edgeType, void (*function)(voi原创 2017-08-02 16:06:18 · 1468 阅读 · 0 评论 -
Qwt中如何在曲线上标定特定点
发现 网上的资料越来越少了,只好自己看着QWT官方的Guidebook,一点点的摸索(手册写的真的有点表意不明) 首先要清楚QwtPlot是个容器类,就像一个画布一样下面的代码就是在这个plot的为x,y的点,来标记一条竖的线 QwtPlotMarker::VLineQwtPlotMarker *mX = new QwtPlotMarker();mX->setLabel(QString::原创 2017-08-13 20:52:20 · 4940 阅读 · 0 评论 -
C++静态成员函数访问非静态成员的几种方法
#在写Qt和树莓派的库混合时候,遇到的问题,中断注册函数是静态的,又必须操作一个对象的成员,所以网上看到了这种方法,故转载但是同时有人提出:破坏了面向对象三原则之一:封装。如果是改造一个旧的系统,这样做可以理解,但如果是设计一个新的系统,还是应该在设计上提高能力。另外方法三是非线程安全的。可是没办法当时遇到了这种情况,框架是死的原文出处:http://www.cnblo转载 2017-08-26 21:22:56 · 499 阅读 · 0 评论 -
如何理解左操作数必须为左值
本文转载自 : _Hebrew博客 声明:本博文用于学习总结及工作心得在C语言中经常会遇到一个问题就是做操作数必须为左值,看一下代码:int a=1,b=2;a<b?a:b=10;在C++编译器环境下,能正常运行,没有错误,但是在C编译器下却会报错: error C2106 “=”:做操作数必须为左值什么是左值?首先需要明白什么是表达式:表达式由一个或多个操作数通过操作符组合而成。最简单的表转载 2017-09-26 20:14:12 · 15075 阅读 · 2 评论 -
MFC消息简介
Win编程自己半路出家,遇到了MFC特有的消息映射机制,和之前QT一样 也是一直连接(映射)的关系 就像信号和槽一样 在mfc 下 是ID(如果是mfc的组件)和ID的注册的消息映射 如果是用户自定义的消息的话afx_msg LRESULT OnOpenAudioDialog(WPARAM, LPARAM); //自定义消息(音频管理)(函数)ON_MESSAGE(WM_OP原创 2017-07-24 23:34:26 · 376 阅读 · 0 评论 -
嵌入式经典面试题
这些题实在太经典了!预处理器(Preprocessor)1 . 用预处理指令#define 声明一个常数,用以表明1年中有多少秒(忽略闰年问题) #define SECONDS_PER_YEAR (60 * 60 * 24 * 365)UL我在这想看到几件事情:1) #define 语法的基本知识(例如:不能以分号结束,括号的使用,等等)2) 懂得预处理器将为你计转载 2017-01-31 18:23:09 · 6270 阅读 · 0 评论 -
C语言头文件避免重复包含
转载自:http://blog.youkuaiyun.com/qustdjx/article/details/7903254 第二种方法学习了假定有以下几个头文件及其包含关系为: 假定有以下几个头文件及其包含关系为: File1.h,file2.h,file3.h,file4.h,file5.h,main.c 那么:file3.h包含file1.h,file2.h,file4.h包含file1.h,fi转载 2017-01-29 17:58:59 · 1038 阅读 · 0 评论 -
字符串常量前面的"L"的作用
一、 在字符串前加一个L作用: unicode字符集是两个字节组成的。L告示编译器使用两个字节的 unicode 字符集。 如 L"我的字符串" 表示将ANSI字符串转换成unicode的字符串,就是每个字符占用两个字节。 strlen("asd") = 3; strlen(L"asd") = 6; 二、 _T宏可以把一个转载 2017-01-23 22:27:26 · 2599 阅读 · 0 评论 -
ANSI C的标准
蓦然回首C语言系列——ANSI C的标准前面的话现在的大学牲入校时,竟然都是用的VC6.0 这么复古的 IDE ,1989年的标准,细数到现在已经有大概30年了学习,当然要学习新的东西,要是现在还是学那些上世纪 的旧东西,怎么能体现当代革新的精神呢?所以在这个博文里,给大家介绍一下 什么是ANSI C ,及VC6.0 的C89与C99的区别,然后向更新的C11进发什么是ANSI C万物都有它的标准,原创 2016-08-15 12:17:27 · 953 阅读 · 0 评论 -
C中的危险函数(缓冲区溢出)
导言C语言,自创始以来,到现在经久不衰。虽然C你只好自己造轮子,由于C语言允许直接访问物理地址,可以直接对硬件进行操作,因此它既具有高级语言的功能,又具有低级语言的特性。所以有可移植的汇编之称。 可是也在这些直接对内存的访问,导致了危险的发生。 有了自由也就多了混乱 ————某斯基原创 2016-08-17 21:25:31 · 3616 阅读 · 0 评论 -
strtol() 字符串转长整型函数
有时间了,就谢谢简单的,小程序,突然发现,想给main传个参,但是*argv[]里都是字符串,可是需要一个整形的值。 基础不好,小问题都折腾半天,最后用个指针,把ascii值做差,再按10的权值相加,折腾了好久。 今天,偶然机会,看到了strtol()这个函数,他的左眼就是把,字符串转为长整型,(一把辛酸泪啊) long int strtol(const char *nptr,char **原创 2016-10-16 11:03:09 · 6430 阅读 · 0 评论 -
输入输出缓冲区
今天有一个(妹子),找我看了一段程序,说是奇怪没有输出什么的看了一下,重点部分是这样的.int main(int argc, char **argv){ for (int i = 0; i < 10; i++){ printf("%s", "balabala..."); sleep(1); } return 0;}它运行的情况是原创 2016-10-28 19:56:29 · 1043 阅读 · 0 评论 -
Linux C 的风格
编码风格在Win编程中,多用驼峰法定义变量名,及函数名 如 void SendData(void);int minValue, maxValue;在Linux编程下,风格就不一样了,多用了下划线 如int min_value, max_value;void send_data(void);在今后既然言编写Linux程序,要跟随LInux社区的风格~~ 1.对于结原创 2016-10-16 13:29:27 · 621 阅读 · 1 评论 -
c/c++标准预定义宏
C标准中的一些预定义宏昨天写代码时需要在代码获取当前编译时间,从而可动态地作为版本信息,因此用到了C标准中的一些预定义的宏。在此将C标准中定义的几个宏一并总结一下:__DATE__ 进行预处理的日期(“Mmm dd yyyy”形式的字符串文字,如May 27 2006) __FILE__ 代表当前源代码文件名的字符串文字 ,包含了详细路径,如G:/program/study/c+/转载 2016-11-24 15:16:31 · 426 阅读 · 0 评论 -
堆和栈的区别(转过无数次的文章)
一、预备知识—程序的内存分配 一个由C/C++编译的程序占用的内存分为以下几个部分 1、栈区(stack)— 由编译器自动分配释放 ,存放函数的参数值,局部变量的值等。其 操作方式类似于数据结构中的栈。 2、堆区(heap) — 一般由程序员分配释放, 若程序员不释放,程序结束时可能由OS回 收 。注意它与数据结构中的堆是两转载 2017-02-04 18:47:35 · 336 阅读 · 0 评论 -
C++中 引用&与取地址&的区别
一个是用来传值的 一个是用来获取首地址的&(引用)==>出现在变量声明语句中位于变量左边时,表示声明的是引用.例如: int &rf; // 声明一个int型的引用rf. &(取地址运算符)==>在给变量赋初值时出现在等号右边或在执行语句中作为一元运算符出现时 表示取对象的地址.在C++中,既有引用又有取地址,好多人对引用和取地址不是很清楚,因此也无法区分。其转载 2017-02-19 14:46:50 · 672 阅读 · 0 评论 -
一篇特别长的总结(C专家编程)
博客链接: http://codeshold.me/2017/02/expert_c_programming.html读一本书必输出一篇笔记或者总结!!! 《C专家编程》这本书很早看完了,但整理笔记却断断续续的花了三天时间,这从侧面更说明了这本书的经典了(尽管不到300页)! 至此C经典著作《C Traps and Pitfalls》《Expert C Programming》转载 2017-02-19 14:52:44 · 1457 阅读 · 0 评论 -
总线错误与段错误
前段买了本《C专家编程》确实不错,特别是对内存思考这一章节,(O(∩_∩)O~目前我也只看到这一章节),其中讲到了总线错误和段错误: bus error(core dumped) 总线错误(信息已经转储) segmetation fault(core dumped)段错误(信息已经转储) 这种错误相信只要你在unix用c,c++这两种错误是常见又是很头疼的错误,目前我也遇到段错误的程序,至今未转载 2017-02-19 15:48:18 · 2115 阅读 · 0 评论 -
int a = 0 与 int a(0) int a(b)
偶然看书发现了int a(0);这种写法,当时感觉很奇怪,于是网上搜索一番,发现了其中原因 C++ 延续了C 的编程思想,所以说有两套编程体系,面向对象及面向过程int a = 0; 这种写法,就是经典的C的写法,初始化a为零int a(0); 这个是使用了构造函数写法的初始化,相当于定义一个int的对象,其初始化的传给构造函数的值为零。所以说 int a = 1; 和int a(1);原创 2017-02-10 23:08:45 · 11860 阅读 · 2 评论 -
自己的总结(你必须知道的C 495个问题)
类型定义typedef int (*funcptr) ( ); 是什么意思 这个的意思是定义了一个funcptr类型,其是指向返回值为int的无参的函数指针 funcptr fp1 = main;结构体类型定义下的问题typedef struct { char *item; NODE next; } *NODE;这个代码在编译时报出错误信息,说是未声明的调用,这是常原创 2017-03-01 19:46:06 · 473 阅读 · 0 评论 -
C++中函数指针的使用
不能忘了老本行,是该回顾回顾关于C++中函数指针的使用(包含对typedef用法的讨论) (一)简单的函数指针的应用。 //形式1:返回类型(*函数名)(参数表) char (*pFun)(int); char glFun(int a){ return;} void main() { pFun = glFun; (*pFun)(2);转载 2017-10-12 00:24:58 · 718 阅读 · 0 评论