C/C++
Joogle
这个作者很懒,什么都没留下…
展开
-
C++中的Const 作用
Const 作用1. const类型定义:指明变量或对象的值是不能被更新,引入目的是为了取代预编译指令2. 可以保护被修饰的东西,防止意外的修改,增强程序的健壮性。3. 编译器通常不为普通const常量分配存储空间,而是将它们保存在符号表中,这使得它成为一个编译期间的常量,没有了存储与读内存的操作,使得它的效率也很高。4. 可以节省空间,避免不必要的内存分配。转载 2012-08-15 19:08:13 · 854 阅读 · 0 评论 -
联合体union
当多个数据需要共享内存或者多个数据每次只取其一时,可以利用联合体(union)。在C Programming Language 一书中对于联合体是这么描述的: 1)联合体是一个结构; 2)它的所有成员相对于基地址的偏移量都为0; 3)此结构空间要大到足够容纳最"宽"的成员; 4)其对齐方式要适合其中所有的成员;下面解释这四条描述: 由转载 2012-10-14 19:38:19 · 581 阅读 · 0 评论 -
5分钟搞定内存字节对齐
http://www.cnblogs.com/longlybits/articles/2385343.html如果体系结构是不对齐的,A中的成员将会一个挨一个存储,从而sizeof(a)为11。显然对齐更浪费了空间。那么为什么要使用对齐呢?体系结构的对齐和不对齐,是在时间和空间上的一个权衡。对齐节省了时间。假设一个体系结构的字长为w,那么它同时就假设了在这种体系结构上对宽度为w的数据的处理转载 2012-09-23 17:07:38 · 511 阅读 · 0 评论 -
结构体字节对齐和位域对齐——VC、gcc
(1)什么是字节对齐一个变量占用 n 个字节,则该变量的起始地址必须能够被 n 整除,即: 存放起始地 址 % n = 0,对于结构体而言, 这个 n 取其成员中的数据类型占空间的值最大的那个。(2)为什么要字节对齐内存空间是按照字节来划分的,从理论上说对内存空间的访问可以从任何地址开始,但是在实际上不同架构的 CPU 为了提高访问内存的速度,就规定了对于某些类型的数据只能从特定的起始转载 2012-10-13 15:34:23 · 3781 阅读 · 0 评论 -
C内存对齐
http://blog.csdn.net/alfredlu/article/details/1878106http://hi.baidu.com/weipatty/item/d46aa0f17a6286d96325d2df一、概念 对齐跟数据在内存中的位置有关。如果一个变量的内存地址正好位于它长度的整数倍,他就被称做自然对齐。比如在32位cpu下,假设一个整型变量的地址转载 2012-10-09 16:28:28 · 771 阅读 · 0 评论 -
单链表是否有环、是否相交
1、如何判断是否存在环?2、如何知道环的长度?3、如何找出环的连接点在哪里?4、带环链表的长度是多少? 1.判断链表是否存在环: 设置两个指针(fast, slow),初始值都指向头,slow每次前进一步,fast每次前进二步,如果链表存在环,则fast必定先进入环,而slow后进入环,两个指针必定相遇。如果,fast走到尾部为NULL,则为无环链表。bo原创 2012-09-30 16:54:41 · 783 阅读 · 0 评论 -
单链表反转
struct ListNode{ int key; ListNode* next;};1.使用三个指针遍历单链表,逐个链接点进行反转ListNode* ReverseList(ListNode* head){ ListNode* p; ListNode* q; ListNode* r;原创 2012-09-29 21:29:31 · 618 阅读 · 0 评论 -
C++中虚析构函数的作用
主要是为了处理多态中发生向上强制转换时先析构派生类从而避免内存泄漏的问题虚函数的作用,就是用基类的指针操作对象时,能在运行时判断出对象的真正类型。 比如 A * p= new B(); delete p; 如果A中的析构函数为虚函数,那么delete p的时候程序就会发现p指向的是一个B的对象,然后调用B的析构函数。 如果A中的析构函数不是虚函数,那么编译器就认为p指向转载 2012-08-28 22:32:58 · 623 阅读 · 0 评论 -
C++ 类访问控制public/private/protected
摘要:本文是从饮水思源BBS C/C++版上一篇帖子引发的思考。当时看到帖子,突然觉得平时见惯了的,在这里似乎变得陌生了,究竟访问控制符怎样起作用,怎样使用,该怎样理解,本文试图给出讨论。 访问权限是类级的,而不是对象级的。c++的限定符是限定类的,不是限定对象的,只要是类型相同就能相互访问,在类中(在类内部),即在类的成员函数中,也即针对类级,同类的对象就可以相互访问。原帖如下转载 2012-08-26 17:11:32 · 652 阅读 · 0 评论 -
构造函数中调用虚函数
在构造函数中调用虚成员函数,虽然这是个不很常用的技术,但研究一下可以加深对虚函数机制及对象构造过程的理解。这个问题也和一般直观上的认识有所差异。先看看下面的两个类定义。struct C180{ C180() { foo(); this->foo(); } virtual foo() { cout }};struct C190 : public转载 2012-08-26 14:47:53 · 693 阅读 · 0 评论 -
C++是如何利用虚函数实现多态性的?
#include using namespace std;class A{public: inline virtual vfun() { cout }};class B : public A{public: inline vfun()转载 2012-08-29 17:21:23 · 480 阅读 · 0 评论 -
C++输入cin详解
输入原理:程序的输入都建有一个缓冲区,即输入缓冲区。一次输入过程是这样的,当一次键盘输入结束时会将输入的数据存入输入缓冲区,而cin函数直接从输入缓冲区中取数据。正因为cin函数是直接从缓冲区取数据的,所以有时候当缓冲区中有残留数据时,cin函数会直接取得这些残留数据而不会请求键盘输入#1:#include using namespace std;int main()转载 2012-08-20 15:38:28 · 682 阅读 · 0 评论