
C/C++
scwinter
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
关于大字节序和小字节序
关于大字节序和小字节序大字节序:把高有效位放在低地址段,例如在按字节寻址的存储器中往地址 0x0001 存放值 0x12345678,在存储器中为 地址 数值 0x0004 0x78 0x0003 0x56 0x0002 0x34 0x0001 0x12小字节序:把低有效位放在低地址段,例如在按字节寻址的存储器中往地址 0x0001 存放值 0x12345678,在存储器中为 地址 数值转载 2010-06-29 16:23:00 · 338 阅读 · 0 评论 -
指针相减
<br />一个同学 去华为面试 ,回来问我一道题, <br />int a;<br />int *p1 ,*p2;<br />p1 = (int * ) 2000;<br />p2 = (int *) 2008;<br />a = p2 - p1;<br />a 的值是多少?<br />我脑海里有 个8 ,也恍惚有个2,我想了一下,说8,后来 他说2,我 心里也不确定,为什么一开始也有2的疑惑呢,亲自上机,一试,果然是2,如果 p1 和 p2 是 char转载 2010-08-30 13:55:00 · 1080 阅读 · 2 评论 -
转载 复习下友元函数和友元类 收藏
<br /><br /><br /><br />采用类的机制后实现了数据的隐藏与封装,类的数据成员一般定义为私有成员,成员函数一般定义为公有的,依此提供类与外界间的通信接口。但是,有时需要定义一些函数,这些函数不是类的一部分,但又需要频繁地访问类的数据成员,这时可以将这些函数定义为该函数的友元函数。除了友元函数外,还有友元类,两者统称为友元。友元的作用是提高了程序的运行效率(即减少了类型检查和安全性检查等都需要时间开销),但它破坏了类的封装性和隐藏性,使得非成员函数可以访问类的私有成员。<br /><b转载 2010-08-11 10:18:00 · 230 阅读 · 0 评论 -
堆和栈的区别
<br />一、预备知识—程序的内存分配 <br />一个由C/C++编译的程序占用的内存分为以下几个部分 <br />1、栈区(stack)— 由编译器自动分配释放 ,存放函数的参数值,局部变量的值等。其 <br />操作方式类似于数据结构中的栈。 <br />2、堆区(heap) — 一般由程序员分配释放, 若程序员不释放,程序结束时可能由OS回 <br />收 。注意它与数据结构中的堆是两回事,分配方式倒是类似于链表,呵呵。 <br />3、全局区(静态区)(static)—,全局变量和静态变量的存储转载 2010-07-07 17:29:00 · 154 阅读 · 0 评论 -
重载、覆盖、多态与函数隐藏
<br />要弄清楚重载、覆盖、多态与函数隐藏之间的复杂且微妙关系之前,我们首先要来回顾一下重载覆盖等基本概念。<br /><br /><br /><br />首先,我们来看一个非常简单的例子,理解一下什么叫函数隐藏hide。<br /><br />#include <iostream><br /><br />using namespace std;<br /><br /><br />class Base{<br /><br />public:<br /><br /> void fun() { cout转载 2010-07-07 16:55:00 · 200 阅读 · 0 评论 -
谈谈C++继承中的重载,覆盖和隐藏
<br /> 写正题之前,先给出几个关键字的中英文对照,重载(overload),覆盖(override),隐藏(hide)。在早期的C++书籍中,可能翻译的人不熟悉专业用语(也不能怪他们,他们不是搞计算机编程的,他们是英语专业的),常常把重载(overload)和覆盖(override)搞错!<br /> 我们先来看一些代码及其编译结果。<br /> 实例一:<br /><br /> #include "stdafx.h"<br /> #include <iostream.h><br /> cl转载 2010-07-07 16:50:00 · 173 阅读 · 0 评论 -
c/c++ struct内存对齐
<br />内存对齐<br />结构体的内存布局依赖于CPU、操作系统、编译器及编译时的对齐选项。结构体内部成员的对齐要求,结构体本身的对齐要求。最重要的有三点<br />(一)成员对齐。对于结构体内部成员,通常会有这样的规定:各成员变量存放 的起始地址相对于结构的起始地址的偏移量必须为该变量的类型所占用的字节数的倍数。但是也可以看到,有时候某些字段如果严格按照大小紧密排列,根本无法达到这样的目的,因此有时候必须进行padding。各成员变量在存放的时候根据在结构中出现的顺序依次申请空间,同时按照上面的对齐转载 2010-07-07 15:52:00 · 346 阅读 · 0 评论 -
内存对齐详解
首先由一个程序引入话题:程序的输出结果为: sizeof(st1) is 12 sizeof(st2) is 8问题出来了,这两个一样的结构体,为什么sizeof的时候大小不一样呢?本文的主要目的就是解释明白这一问题:内存对齐,正是因为内存对齐的影响,导致结果不同。对于大多数的程序员来说,内存对齐基本上是透明的,这是编译器该干的活,编译器为程序中的每个数据单元安排在合适的位置上,从而导致了相同的变量,不同声明顺序的结构体大小的不同。 那么编译器为什么要进行内存对齐呢?程序1中转载 2010-07-07 15:44:00 · 221 阅读 · 0 评论 -
鱼还是熊掌:浅谈多进程多线程的选择
<br />关于多进程和多线程,教科书上最经典的一句话是“进程是资源分配的最小单位,线程是CPU调度的最小单位”,这句话应付考试基本上够了,但如果在工作中遇到类似的选择问题,那就没有这么简单了,选的不好,会让你深受其害。<br /> <br />经常在网络上看到有的XDJM问“多进程好还是多线程好?”、“Linux下用多进程还是多线程?”等等期望一劳永逸的问题,我只能说:没有最好,只有更好。根据实际情况来判断,哪个更加合适就是哪个好。<br /> <br />我们按照多个不同的维度,来看看多线程和多进程的对转载 2010-07-08 10:01:00 · 669 阅读 · 0 评论 -
C++变量在32位系统和64位系统的区别。
<br /> <br />Let's describe here only types which can be of interest for developers when porting applications. These types are shown in Table 3. Most recompilation errors will relate to using these very types. <br />Type Type's size on x32 / x64 platform转载 2010-07-02 15:01:00 · 2147 阅读 · 0 评论 -
一个C++多线程例子
#include#includeint a=0;CRITICAL_SECTION gcs;DWORD WINAPI RecvThread(LPVOID lp){ int num=*(DWORD*)lp; while(a { printf("Thread %d a= %d\n",num,a); EnterCriticalSectio转载 2011-11-23 22:12:37 · 272 阅读 · 0 评论