C、C++ 技术点滴
文章平均质量分 70
cy_weiyi
留下自己的青春
展开
-
大端小端格式详解
百科:大端模式,是指数据的高字节保存在内存的低地址中,而数据的低字节保存在内存的高地址中,这样的存储模式有点儿类似于把数据当作字符串顺序处理:地址由小向大增加,而数据从高位往低位放;小端模式,是指数据的高字节保存在内存的高地址中,而数据的低字节保存在内存的低地址中,这种存储模式将地址的高低和数据位权有效地结合起来,高地址部分权值高,低地址部分权值低,和我们的逻辑方法一致。大端模转载 2015-05-13 09:43:55 · 383 阅读 · 0 评论 -
malloc(0)
原来...malloc的内存分配之 malloc(0)的内存分配情况#includeusing namespace std;int main(){ char *p; if((p=(char *)malloc(0))==NULL) puts("got a null pointer");转载 2015-08-01 14:54:37 · 414 阅读 · 0 评论 -
浮点数存储原理
单精度和双精度浮点数数据类型 C、C++中使用到的单精度浮点数(float)类型和双精度浮点数(double)类型是在IEEE二进制浮点数算术标准(ANSI/IEEE Std 754-1985)中定义的。下面分别从存储格式、内存分布、编码规则、取值范围、有效数字位数和测试示例程序六个部分来详细说明。存储格式浮点数在计算机中存储时,按照二进制科学计数法拆分为三个部转载 2015-08-01 12:38:14 · 1737 阅读 · 0 评论 -
浮点数内存表示方法
浮点数7位有效数字。双精度数16位有效数字。浮点数取值范围:负数取值范围为 -3.4028235E+38 到 -1.401298E-45,正数取值范围为 1.401298E-45 到 3.4028235E+38。双精度数取值范围:负值取值范围-1.79769313486231570E+308 到 -4.94065645841246544E-324,正值取值范围为 4.94065645转载 2015-08-01 12:34:28 · 605 阅读 · 0 评论 -
[转载]转:CreateFileMapping实现的共享内存及用法
在32位的Windows系统中,每一个进程都有权访问他自己的4GB(232=4294967296)平面地址空间,没有段,没有选择符,没有near和far指针,没有near和far函数调用,也没有内存模式。每个进程都有独立的4GB逻辑地址空间,32位的Windows系统允许每一个进程独立访问自己的内存,即独立于其 它进程,也即它自己的32位逻辑地址空间。操作系统将把每一个进程的逻辑地址转换成实际转载 2015-07-22 21:26:50 · 922 阅读 · 0 评论 -
Windows进程的同步之内核对象-互斥量(Mutex)
原文 http://blog.csdn.net/anonymalias/article/details/9080881我们知道进程间的同步操作都是要借助内核来完成的,和同一个进程中的线程同步只需要在用户模式下是有很大差别的,当然,对于进程安全的,对于线程肯定也是安全的,但在用户模式下的线程同步所需消耗的代价相对于通过内核完成的同步是很小的。所以不要利用进程同步的方式来进行同一进程中线程的同步转载 2015-07-22 21:33:39 · 590 阅读 · 0 评论 -
public class 与class的区别
public class:是JAVA定义的,一般占到编程的角度来将就是包含main方法的,一个java文件中只有一个public class,而且public class的文件名要跟.java的文件名一致。class:在Java编程是描述对象的,也就是类。提示:Java编程就这么定义的,记住就行了,没什么特殊的含义。c++ 中没有这个说法原创 2015-08-03 14:19:13 · 725 阅读 · 0 评论 -
基类指针+子类指针问题
class Parent{public: void geta() { cout<<"------------------ Parent geta-------------------"<<endl; } virtual void getb() { cout<<"------------------Parent virtual getb-------------------"原创 2015-08-03 14:51:16 · 1171 阅读 · 0 评论 -
C++ 虚函数表解析
C++中的虚函数的作用主要是实现了多态的机制。关于多态,简而言之就是用父类型别的指针指向其子类的实例,然后通过父类的指针调用实际子类的成员函数。这种技术可以让父类的指针有“多种形态”,这是一种泛型技术。所谓泛型技术,说白了就是试图使用不变的代码来实现可变的算法。比如:模板技术,RTTI技术,虚函数技术,要么是试图做到在编译时决议,要么试图做到运行时决议。 关于虚函数的使用方法,我在这转载 2015-08-02 12:08:13 · 208 阅读 · 0 评论 -
Windows环境下利用“共享内存”实现进程间通信的C/C++代码---利用CreateFileMapping和MapViewOfFile
进程间的通信方式有很多种, 上次我们说了最傻瓜的“共享外存/文件”的方法。 那么, 在本文中, 我们即将学习“共享内存”的方式实现进程间的通信, 这是IPC最快的方法。有的地方又把这种“共享内存”的方式叫做“内存映射文件”方式。 我们首先来看看进程A对应的程序:#include #include using namespace std;#define BUF_SIZE转载 2015-07-22 21:20:38 · 799 阅读 · 0 评论 -
new创建对象和直接定义的区别
1.c++中1. 声明只是表示一个对象的引用,比如我们的语句:MyClasee myclass;这里是一个空引用,而通过new关键字可以实例化一个MyClasee的实例,所以语句:myclass = new MyClass();2.栈,放的是局部变量,他的生存期就是他所处的语句块(也就是离他最近的一对{}),离开了他的生存期他就失效了,一转载 2015-08-04 11:10:46 · 6390 阅读 · 1 评论 -
C++学习笔记
1.struct成员默认访问方式是public,而 class默认访问方式是private!2.exit函数终止程序执行会调用析构函数 ,abort函数终止程序不会调用析构函数!3.静态局部变量直到程序终止时才退出!4.通过public 函数返回 private成员的引用有可能会破坏类的封装 ,造成外部变量可以改变类私有成员值!5.常量对象只能调用常量成员函数,常量转载 2015-08-04 11:21:10 · 230 阅读 · 0 评论 -
C++学习笔记
C++学习笔记 2011-08-28 15:40:16分类: C/C++以前学C++时记的比较,因最近开发用C++较多,把笔记翻出来复习了一下,跟大家分享一下。类的声明及定义1. class、struct、union保留字都可以用来声明和定义类。class中成员默认为private类型,struct、union与C语言兼容,成员默认为public类型。2.转载 2015-08-04 11:32:29 · 306 阅读 · 0 评论 -
八大排序算法
八大排序算法分类: 数据结构与算法 c/c++2012-07-23 16:45 164888人阅读 评论(56) 收藏 举报算法mergepivot存储exchange目录(?)[+]概述排序有内部排序和外部排序,内部排序是数据记录在内存中进行排序,而外部排序是因排序的数据很大,一次不能容纳全部的排序记录,在排序过程中需要访问外存转载 2015-08-21 19:11:26 · 568 阅读 · 1 评论 -
C语言的那些秘密之---函数返回局部变量
C语言的那些秘密之---函数返回局部变量分类: 编程语言2011-08-17 13:06 14347人阅读 评论(16) 收藏 举报语言c编译器存储 一般的来说,函数是可以返回局部变量的。 局部变量的作用域只在函数内部,在函数返回后,局部变量的内存已经释放了。因此,如果函数返回的是局部变量的值,不涉及地址,程序不会出错。但是如果返回的是局部变量的地址(指针)的话,程序转载 2015-08-01 14:17:20 · 352 阅读 · 0 评论 -
open,write等基本系统IO的带缓冲与不带缓冲的差别
带缓存的文件操作是标准C 库的实现,第一次调用带缓存的文件操作函数时标准库会自动分配内存并且读出一段固定大小的内容存储在缓存中。所以以后每次的读写操作并不是针对硬盘上的文件直接进行的,而是针对内存中的缓存的。何时从硬盘中读取文件或者向硬盘中写入文件有标准库的机制控制。 不带缓存的文件操作通常都是系统提供的系统调用,更加低级,直接从硬盘中读取和写入文件,由于IO瓶颈的原因,速度并不转载 2015-07-14 16:55:16 · 547 阅读 · 0 评论 -
Static、Extern、Volatile及Const关键字总结
Static、Extern、Volatile及Const关键字总结关键字static 关键字Const有什么作用?static在C中主要用于定义转载 2015-07-09 19:42:35 · 2071 阅读 · 0 评论 -
poll()函数的使用
poll函数用于监测多个等待事件,若事件未发生,进程睡眠,放弃CPU控制权,若监测的任何一个事件发生,poll将唤醒睡眠的进程,并判断是什么等待事件发生,执行相应的操作。poll函数退出后,struct pollfd变量的所有值被清零,需要重新设置。示例是使用poll函数来监测按键的输入#include #include #include #include #include转载 2015-07-04 21:07:24 · 767 阅读 · 0 评论 -
继承 和static
继承和多态1。友元是不可以被继承的:基类的友元不可以访问派生类的成员;同样,一个友元的派生类也不可以访问定义友元的类。2。除static成员外,每个派生类都保存了基类的一个副本,包括派生类不能访问的 private成员;static在整个继承层中只有一个,其访问属性跟其他成员一样。3。虚函数在本质上是语义上的完备性表现:作为基类的成员却可以能被派生类重新定义;当然也正因为如此才有了多态转载 2015-07-10 19:28:36 · 293 阅读 · 0 评论 -
ARM-Linux--ADC 驱动(查询方式)
主机系统:Ubuntu 11.04内核版本:Linux Kernel 2.6.39硬件平台:FL2440开发板系统:Linux Kernel 2.6.28下面是用CPU轮寻的方式来判断AD转换完成的#include #include #include #include /*创建设备节点*/#include #include /*延时函数*/转载 2015-06-15 09:05:42 · 922 阅读 · 0 评论 -
poll函数和select函数
poll函数和select函数非常相似,但是函数接口不一样。 int poll(struct pollfd fdarray[], nfds_t nfds, int timeout); int select(int maxfdp1, fd_set *restrict readfds, fd_set *restrict expectfds, struct timeval * restric转载 2015-07-04 21:13:58 · 403 阅读 · 0 评论 -
c++引用与指针的区别(着重理解)
★ 相同点: 1. 都是地址的概念; 指针指向一块内存,它的内容是所指内存的地址;引用是某块内存的别名。 ★ 区别: 1. 指针是一个实体,而引用仅是个别名; 2. 引用使用时无需解引用(*),指针需要解引用; 3. 引用只能在定义时被初始化一次,之后不可变;指针可变; 引用“从一而终” ^_^ 4. 引用没有 con转载 2015-07-12 17:01:48 · 310 阅读 · 0 评论 -
C++ : 引用的实质理解 !!!!
引用的定义:在类型和标识符之间加上一个取地址符,说明该标识符为指定类型的引用 如: int &ref = num; 就是ref是一个int型的引用 引用有什么作用呢? 看下面代码就知道了: [cpp] view plaincopy#include using namespace std;转载 2015-07-12 17:09:40 · 680 阅读 · 0 评论 -
C中的函数指针使用
函数指针是指向函数的指针变量。 因而“函数指针”本身首先应是指针变量,只不过该指针变量指向函数。这正如用指针变量可指向整型变量、字符型、数组一样,这里是指向函数。如前所述,C在编译时,每一个函数都有一个入口地址,该入口地址就是函数指针所指向的地址。有了指向函数的指针变量后,可用该指针变量调用函数,就如同用指针变量可引用其他类型变量一样,在这些概念上是一致的。函数指针有两个用途:调用函数和做函数的参转载 2015-06-15 09:20:20 · 272 阅读 · 0 评论 -
socket通信网络模型
socket模型:1、阻塞模型 一个单进程accept阻塞,接收到客户端请求后,read消息,处理write返回,然后循环继续accept。 这种模型最最简单,不实际,没什么实际用途,对于新手教学还行。2、多进程(线程)模型 主进程循环accept阻塞,接收到客户端请求后,fork子进程处理,子进程read阻塞,接收客户端消息并响应。 这种模型是我使用到最多的,简单实用,但是当客户端请求超多时,f转载 2015-07-13 12:59:21 · 450 阅读 · 0 评论 -
GDB调试从基础到精通实例
用GDB调试程序GDB概述————GDB是GNU开源组织发布的一个强大的UNIX下的程序调试工具。或许,各位比较喜欢那种图形界面方式的,像VC、BCB等IDE的调试,但如果你是在UNIX平台下做软件,你会发现GDB这个调试工具有比VC、BCB的图形化调试器更强大的功能。所谓“寸有所长,尺有所短”就是这个道理。一般来说,GDB主要帮忙你完成下面四个方面的功能: 1、启动你的程转载 2015-07-13 16:18:29 · 301 阅读 · 0 评论 -
gdb调试命令
gdb调试命令 本文主要参考自:http://www.cnblogs.com/zzx1045917067/archive/2012/12/26/2834310.html,进行了一点补充和编排;Core dump部分参考了:http://blog.ddup.us/?p=176。 gdb是一个在UNIX环境下的命令行调试工具。 如果需要使用gdb调试程序,请在gcc时加上转载 2015-07-13 12:51:18 · 412 阅读 · 0 评论 -
单例模式
单例模式,可以说设计模式中最常应用的一种模式了,据说也是面试官最喜欢的题目。但是如果没有学过设计模式的人,可能不会想到要去应用单例模式,面对单例模式适用的情况,可能会优先考虑使用全局或者静态变量的方式,这样比较简单,也是没学过设计模式的人所能想到的最简单的方式了。一般情况下,我们建立的一些类是属于工具性质的,基本不用存储太多的跟自身有关的数据,在这种情况下,每次都去new一个对象,即增加了开销转载 2015-07-14 14:21:31 · 247 阅读 · 0 评论 -
c++函数返回引用
函数返回值和返回引用是不同的函数返回值时会产生一个临时变量作为函数返回值的副本,而返回引用时不会产生值的副本,既然是引用,那引用谁呢?这个问题必须清楚,否则将无法理解返回引用到底是个什么概念。以下是几种引用情况: 1,引用函数的参数,当然该参数也是一个引用 const string &shorterString(const string &s1,const strin转载 2015-07-14 17:28:08 · 783 阅读 · 0 评论 -
函数的指针如何说明、赋值、调用
第一个例子说明指向函数的指针如何说明、赋值、调用。 #include #define TESTDATE 100 int func(int a) /* func用于打印一个整数 */ { return printf("%d\n",a); } main() { int (*FunctionPionter)(int a);转载 2015-08-21 16:23:03 · 1143 阅读 · 0 评论