C/C++
文章平均质量分 54
somewhere117
这个作者很懒,什么都没留下…
展开
-
字符串常量
写代码的时候,发现对字符串常量改变的问题。网上找了一下资料,明白了出处:http://blog.csdn.net/andylyc/archive/2008/01/16/2046225.aspx 请在(且只能在TC2.0)中运行下面代码,先不要看结果,想想会得到什么: #include #include int main(转载 2009-08-06 10:11:00 · 1606 阅读 · 1 评论 -
C++中头文件相互包含的几点问题
from: http://hi.baidu.com/shilyx/blog/item/c1e3f7f277e29811b17ec5f2.html 一、类嵌套的疑问C++头文件重复包含实在是一个令人头痛的问题,前一段时间在做一个简单的数据结构演示程序的时候,不只一次的遇到这种问题。假设我们有两个类A和B,分别定义在各自的有文件A.h和B.h中,但是在A中要用到B,B中也要用到A,但是转载 2009-08-24 10:25:00 · 634 阅读 · 1 评论 -
超前引用
from: http://www.cnblogs.com/sunrack/articles/590384.html 所谓超前引用是指一个类型在定义之前就被用来定义变量和声明函数。 一般情况下,C/C++要求所有的类型必须在使用前被定义,但是在一些特殊情况下,这种要求无法满足,例如,在类CMyView中保留了一个非模式对话框对象指针,该对象用于显示/修改一些信息。为了实现对话转载 2009-08-24 10:39:00 · 471 阅读 · 0 评论 -
关于#include "stdafx.h"
#include "stdafx.h"(1)Standard Application FrameExtend没有函数库,只是定义了一些环境参数,使得编译出来的程序能在32位的操作系统环境下运行。Windows和MFC的include文件都非常大,即使有一个快速的处理程序,编译程序也要花费相当长的时间来完成工作。由于每个.CPP文件都包含相同的include文件,为每个.CPP文件都转载 2009-08-24 10:12:00 · 644 阅读 · 0 评论 -
到底是前向引用,还是包含头文件
如果类B仅使用了类A的指针或引用,那么一可以在类B的头文件中使用一个类A的前向声明就可以。这是因为指针的长度于只平台有关。而如果类B使用了类A的成员函数或成员变量的话,或者如果类B的定义中包含一个类A的对象而不是类A的一个指针或引用的话,就不能只用前向声明了,因为B的头文件在编译时,编译器需要知道B的大小,从而就需要知道A的大小。这时,就需要包含类A的头文件了。原创 2009-08-29 10:22:00 · 606 阅读 · 0 评论 -
变量定义与声明的区别
我们在程序设计中,时时刻刻都用到变量的定义和变量的声明,可有些时候我们对这个概念不是很清楚,知道它是怎么用,但却不知是怎么一会事,下面我就简单的把他们的区别介绍如下: 变量的声明有两种情况: (1) 一种是需要建立存储空间的(定义、声明)。例如:int a在声明的时候就已经建立了存储空间。 (2) 另一种是不需要建立存储空间的(声明)。例如:extern i转载 2009-08-31 21:36:00 · 392 阅读 · 0 评论 -
明晰C++内存分配的五种方法的区别
from: http://www.bccn.net/Article/kfyy/cjj/jszl/200607/4172.html 在C++中,内存分成5个区,他们分别是堆、栈、自由存储区、全局/静态存储区和常量存储区。 栈,就是那些由编译器在需要的时候分配,在不需要的时候自动清楚的变量的存储区。里面的变量通常是局部变量、函数参数等。 堆,就是那些由new分配的内存转载 2009-08-31 21:40:00 · 407 阅读 · 0 评论 -
局部性原理【读书摘记】
时间局部性和空间局部性 一个编写良好的计算机程序应该倾向于展示出良好的局部性。也就是,它们倾向于引用的数据项临近其他最近引用过的数据项,或者临近于最近自我引用过的数据项。 int sumvec(int v[N]){ int i, sum = 0; for(i = 0; i sum += v[i];转载 2009-09-01 10:34:00 · 642 阅读 · 0 评论 -
linker如何解析多处定义的全局符号【读书摘记】
from:深入理解计算机系统 对于全局符号的引用解析,当编译器遇到一个不是在当前模块中定义的符号(变量或函数名)时,它会假设该符号是在其他某个模块中定义的,生成一个linker符号表表目,并把它交给linker处理。如果linker在它的任何输入模块中都找不到这个被引用的符号,它就输出一条错误信息并终止。 在编译时,编译器输出每个全局符号给汇编器,或者是强(strong),或者是弱转载 2009-09-01 15:00:00 · 559 阅读 · 0 评论 -
visual C++头文件stdafx.h
from: http://hi.baidu.com/linzch/blog/item/5621cd80e50a09df9123d9fe.html 当使用visual C++时,总是包含了头文件stdafx.h,却不知道是干什么用的. 呵呵,今天查找了相关资料,解释如下: 当我们使用AppWizard来自动生成某些项目的时候,系统会自动把所需要include的头文件在std转载 2009-08-24 10:14:00 · 791 阅读 · 0 评论 -
memset
memset是针对字符类型数组进行初始化的,也就是说每次初始化一个字节。所以如果使用它初始化int型数组的话,初始化值是0的话没什么问题;但是初始化值为1时就会出现问题。原创 2009-08-13 10:24:00 · 318 阅读 · 0 评论 -
C++多线程编程入门
第1节 背景为了更好的理解多线程的概念,先对进程,线程的概念背景做一下简单介绍。早期的计算机系统都只允许一个程序独占系统资源,一次只能执行一个程序。在大型机年代,计算能力是一种宝贵资源。对于资源拥有方来说,最好的生财之道自然是将同一资源同时租售给尽可能多的用户。最理想的情况是垄断全球计算市场。所以不难理解为何当年IBM预测“全球只要有4台计算机就够了”。这种背景下,一转载 2009-08-06 18:52:00 · 4106 阅读 · 1 评论 -
0号内存单元和空指针——读书笔记[Linux程序设计大全]
#define NULL (void*)0 NULL其实是一个空指针,空指针实际上就是一个常数0,其代表0号内存单元,在所有系统中0号内存单元都是不允许读写操作的,因此指向该内存单元的指针作为空指针使用。之所以需要将0转换为 void * 类型的指针,根本目的是要避免编译器做无用 的类型检查。转载 2009-08-10 15:18:00 · 612 阅读 · 0 评论 -
const指针——读书笔记[Linux程序设计大全]
const在指针之前,如 const int *p; 表明指针指向的内容是const的const 在指针之中,如int * const p;表明指针本身是const的const在指针之前和之中,如 int const * const p;表明指针本身和起指向内容都是不可改变的转载 2009-08-10 15:31:00 · 351 阅读 · 0 评论 -
与函数有关的优化——读书笔记[Linux程序设计大全]
一个函数调用要经过以下4个步骤:1.参数压栈2.保存寄存器的值3.保存返回地址4.跳转 变量存储优化:全局变量存储在数据段上,局部变量存储在栈上。编译器会将局部变量存储在寄存器中,而全局变量存储于内存中。转载 2009-08-10 14:37:00 · 421 阅读 · 0 评论 -
可重入与不可重入——读书笔记[Linux程序设计大全]
当函数被不同的执行流程调用时候,有可能第一次调用还没有返回就又一次进入该函数,称为重入。如果一个函数只访问局部变量或参数,则称为可重入函数活线程安全的函数。 不可重入函数有以下特征:1.使用了全局的数据2.调用了动态方法得到内存3.使用了标准I/O库。 归根到底就是所有使用具有全局作用域数据的函数都是不可重入的。转载 2009-08-11 08:43:00 · 430 阅读 · 0 评论 -
进程间通信:1.管道——读书笔记[Linux程序设计大全]
利用管道和fork实现进程间通信 #include#include#include#include#include#define BUFES 256int main(){ pid_t pid; int fd[2]; char str[BUFES]; int len; if((pipe(fd))转载 2009-08-11 09:37:00 · 511 阅读 · 0 评论 -
指针(详解)
[转]这篇文章摘自网易广州社区的C语言版精华区。文章不错,不敢独享!作者girlrong是以前C语言版版主,她乐于助人,虚心诚恳,颇受网友欢迎。只可惜现在已退隐江湖了。 第一章。指针的概念 指针是一个特殊的变量,它里面存储的数值被解释成为内存里的一个地址。要搞清一个指针需要搞清指针的四方面的内容:指针的类型,指针所指向的类转载 2009-08-11 20:52:00 · 337 阅读 · 0 评论 -
优化控制结构——读书笔记[Linux程序设计大全]
表达式优化:1.使用移位替换程序中的乘除法:所有乘法都可以替换成移位的组合,例如 a*13 a2.常量折叠:其实就是说把常量的计算串计算出来,得出一个常量3.使用数学公式:如求和公式等4.存储问题:c中的变量要保存到内存中,相对cpu内部的寄存器操作,访问内存所消耗的时间是很大的。 这也是为什么要用 x += 1 替代转载 2009-08-10 14:00:00 · 364 阅读 · 0 评论 -
彻底了解指针数组,数组指针,以及函数指针,以及堆中的分配规则
from: http://www.tongji.net/index.php/uid-160994-action-viewspace-itemid-12351 对象的堆内存分配,指针数组和数组指针有关内存的说明 ! 一 :关于指针和堆的内存分配 先来介绍一下指针 : 指针一种类型,理论上来说它包含其他变量的地址,因此有的书上也叫它:地址变量。既然指针是一个类型,是类转载 2009-11-05 20:39:00 · 549 阅读 · 0 评论