C/C++
文章平均质量分 68
keke_Xin
这个作者很懒,什么都没留下…
展开
-
c++中const用法
关键字:Const,Const函数,Const变量,函数后面的Const 1. Bool fa(const A& a); 这里的const是说明变量a在函数Bool fa(const A& a)内不能被修改。 2. const A& fb(int i); 这里是说函数const A& fb(int i) 的返回值不能被修改 3. void fc() const; 这...2010-04-19 22:41:17 · 87 阅读 · 0 评论 -
C与C++中struct的区别,以及C++中struct与Class的区别
C中struct只可以放成员变量,没有访问权限限制,外部可以访问;C++中struct用法对C中struct进行了扩展,功能与class类似,可以放成员函数,可以被继承,所有成员数据默认权限为public,struct不可以定义无参的构造函数。C++中Class默认权限为private,可以定义无参构造函数,struct主要在这些方面与其不同。下面是段程序#includ...原创 2010-06-25 10:44:01 · 234 阅读 · 0 评论 -
链表常见笔试题
链表的一些常见笔试面试问题总结及代码先什么也不说,假设链表节点的数据结构为:struct node {int data;struct node* next;};创建单链表的程序为:struct node* create(unsigned int n){//创建长度为n的单链表assert(n > 0);node* head;head = new no...原创 2010-06-25 11:22:48 · 173 阅读 · 0 评论 -
原码,补码,反码(针对byte(128) = -128的问题)
int a = 128;byte b = (byte)a;那么b = -128,为什么?第一种理解:byte的表示范围是-128到+127,128的二进制表示是0000000010000000,若将其强制转换为byte型,则只留下10000000,即-128 。譬如byte=137,明显超出了byte所能表示的范围;所以取其二进制表示:10001001首先最高位表示符号位,所以...原创 2010-06-25 16:40:34 · 438 阅读 · 0 评论 -
堆和栈的区别
栈是随函数被调用时分配的空间 栈上分配的空间是临时的,在函数退出后将被系统释放,不会造成内存泄露,不得用delete或free操作,因为栈的空间小所以在栈上不能获得大量的内存块,一般最大也就不到10M 堆是在整个进程的未分配空间中分配的内存,由malloc或new分配,一般必须由free或delete释放。堆上可以分配大量的内存,只要你的机器吃得消。 一般来说,由new和mallo...原创 2010-06-29 10:56:49 · 90 阅读 · 0 评论 -
程序在内存中运行的奥秘
内存管理是操作系统的核心功能,无论对于开发者还是系统管理员内存管理的重要性都是不言而喻的。我会在接下来的几篇文章通过计算机的实际运行过程谈谈内存管理,当然在必要的时候我也会从底层原理去阐释这个问题。我们提到的概念是不局限于平台特性的通用概念,不过为了阐述这些概念我们选取的实例大多来源于Linux和基于x86架构的32位Windows操作系统。这篇文章,我们首先来看看程序是如何使用内存的。多...原创 2010-07-01 12:18:47 · 819 阅读 · 0 评论 -
C++新型头文件与名称空间的作用
1.20 新型头文件与名字空间 本节是为使用支持ANSI/ISO草案标准的编译器用户提供的。草案标准指定了许多旧式C++头文件的新名,包括iostream.h,大多数新式头文件不再用扩展名.h。图1.16改写图1.2,演示新型头文件和两种使用标准库头文件的方法。 第3行: #include<iostream> 演示新型头文件 名语...原创 2012-05-25 09:06:28 · 154 阅读 · 0 评论 -
C语言编译执行的全过程
编译,编译程序读取源程序(字符流),对之进行词法和语法的分析,将高级语言指令转换为功能等效的汇编代码,再由汇编程序转换为机器语言,并且按照操作系统对可执行文件格式的要求链接生成可执行程序。C源程序头文件-->预编译处理(cpp)-->编译程序本身-->优化程序-->汇编程序-->链接程序-->可执行文件1.编译预处...原创 2012-05-28 09:13:08 · 297 阅读 · 0 评论 -
C语言中宏的一些特别用法
转载C语言中如何使用宏C(和C++)中的宏(Macro)属于编译器预处理的范畴,属于编译期概念(而非运行期概念)。下面对常遇到的宏的使用问题做了简单总结。关于#和##在C语言的宏中,#的功能是将其后面的宏参数进行字符串化操作(Stringfication),简单说就是在对它所引用的宏变量通过替换后在其左右各加上一个双引号。比如下面代码中的宏:#define WARN_IF(EX...原创 2012-05-28 09:36:15 · 110 阅读 · 0 评论 -
C语言中#line 宏说明
c语言里有个很少用到的宏 #line,这个宏通常是和__LINE__宏一起使用的,__LINE__宏表示当前c语句在源文件中的行数,以前也只是在书上看到过,写过一些实例小程序,实际应用中并无使用。 好了,废话不说,举个例子来说明 #line宏的使用: 1:#include "iostream" 2:#line ...原创 2012-05-28 09:38:03 · 236 阅读 · 0 评论 -
C语言void指针
1.概述 本文将对void关键字的深刻含义进行解说,并详述void及void指针类型的使用方法与技巧。 2.void的含义 void的字面意思是“无类型”,void *则为“无类型指针”,void *可以指向任何类型的数据。 void几乎只有“注释”和限制程序的作用,因为从来没有人会定义一个void变量,让我们试着来定义: void a; 这行语句编译时会出错...原创 2012-05-29 09:50:40 · 148 阅读 · 0 评论 -
C语言const
原文地址:http://hi.baidu.com/onlys_c/blog/item/7d0dc7f70e413829720eec2a.html 基本解释 const是一个C语言的关键字,它限定一个变量不允许被改变。使用const在一定程度上可以提高程序的健壮性,另外,在观看别人代码的时候,清晰理解const所起的作用,对理解对方的程序也有一些帮助。虽然这听起来很...原创 2012-05-30 14:35:40 · 171 阅读 · 0 评论 -
C语言一些有用的宏定义
C语言宏定义技巧(常用宏定义) 写好C语言,漂亮的宏定义很重要,使用宏定义可以防止出错,提高可移植性,可读性,方便性 等等.下面列举一些***软件中常用得宏定义...... 1,防止一个头文件被重复包含 #ifndef COMDEF_H #define COMDEF_H //头文件内容 #endif 2,重新定义...原创 2012-05-30 22:36:57 · 158 阅读 · 0 评论 -
定义计算变量相对于结构体偏移量的宏
#include <stdio.h>#include <string.h>#include <stdlib.h> struct person {int a;int m;char b;char c;}; #define FIND(type, member) (size_t)&(((type *)0)->...原创 2012-05-30 22:42:49 · 189 阅读 · 0 评论 -
scanf的用法
scanf()函数的用法和实践daizh摘要:本文阐述了基于ANSI,Win 95,Win NT上的 C/C++语言中scanf()函数的用法,以及在实际使用中常见错误及对策。关键词:scanf()一、 序言在CSDN论坛的C/C++版块,我时常见到“对于scanf()函数的用法、及出现的各种错误而迷惑”的帖子,萌发了我写这篇文章的念头。文...原创 2012-05-31 23:37:28 · 209 阅读 · 0 评论 -
C++中的inline用法总结
inline函数的作用 在C++中,为了解决一些频繁调用的小涵数大量消耗栈空间或者是叫栈内存的问题,特别的引入了inline修饰符,表示为内联涵数。 可能说到这里,很多人还不明白什么是栈空间,其实栈空间就是指放置程序的局部数据也就是函数内数据的内存空间,在系统下,栈空间是有限的,如果频繁大量的使用就会造成因栈空间不足所造成的程序出错的问题,涵数的死循环递归调用的最终结果就是导致栈内...原创 2010-05-26 22:26:25 · 347 阅读 · 0 评论 -
C++枚举类型用途及定义详解
C++编程语言作为一种功能强大的语言,对开发人员来说作用是非常大的。不过,其中有很多应用方式还需要我们去不断的探讨,不断从中汲取经验来达到熟练的程度。下面我们就先为大家详细介绍一下有关C++枚举类型的相关概念。1、枚举enum的用途浅例写程序时,我们常常需要为某个对象关联一组可选alternative属性.例如,学生的成绩分A,B,C,D等,天气分sunny, cloudy, rainy等...原创 2010-05-26 21:14:50 · 384 阅读 · 0 评论 -
C++ Template 中的typename、class关键字区别
在c++Template中很多地方都用到了typename与class这两个关键字,而且好像可以替换,是不是这两个关键字完全一样呢? 相信学习C++的人对class这个关键字都非常明白,class用于定义类,在模板引入c++后,最初定义模板的方法为: template<class T>...... 在这里class关键字表明T是一个类型,后来为了避免cl...原创 2010-05-19 19:27:32 · 335 阅读 · 0 评论 -
比较c++中的值传递,引用传递,指针传递
#include "stdio.h" #include "iostream.h" void DeliByValue(int x); void DeliByReference(int &x); void DeliByPointer(int *x); void main() { int number=0; DeliByValue(number); cout...2010-04-19 22:45:34 · 86 阅读 · 0 评论 -
c++中指针和数组的区别
C++/C程序中,指针和数组在不少地方可以相互替换着用,让人产生一种错觉,以为两者是等价的。 数组要么在静态存储区被创建(如全局数组),要么在栈上被创建。数组名对应着(而不是指向)一块内存,其地址与容量在生命期内保持不变,只有数组的内容可以改变。 指针可以随时指向任意类型的内存块,它的特征是“可变”,所以我们常用指针来操作动态内存。指针远比数组灵活,但也更危险。下面以字...2010-04-19 22:59:36 · 133 阅读 · 0 评论 -
c/c++中指针参数如何传递内存
内存的分配何管理一直让许多c++爱好者头痛不已,不仿看看下面的东西!来自林锐的《高质量c++编程指南》指针参数是如何传递内存的? 如果函数的参数是一个指针,不要指望用该指针去申请动态内存。示例7-4-1中,Test函 数的语句GetMemory(str, 200)并没有使str获得期望的内存,str依旧是NULL,为什么? void Ge...2010-04-19 23:06:08 · 80 阅读 · 0 评论 -
C/C++与Java各数据类型所占字节数比较
C/C++的数据类型: 一,整型Turbo C: [signed] int 2Byte//有符号数,-32768~32767 unsigned int 2Byte //无符号数,只能表示整数0~65535 [signed] short [int] 2Byte unsigned short [int] 2 Byte long [int] 4 Byte...2010-04-20 16:52:37 · 162 阅读 · 0 评论 -
typedef用法
1楼来源一:Using typedef to Curb Miscreant Code Typedef 声明有助于创建平台无关类型,甚至能隐藏复杂和难以理解的语法。不管怎样,使用 typedef 能为代码带来意想不到的好处,通过本文你可以学习用 typedef 避免缺欠,从而使代码更健壮。 typedef 声明,简称 typedef,为现有类型创建一个新的名字。比如人们常...2010-04-25 23:16:03 · 79 阅读 · 0 评论 -
[C++]拷贝构造函数和赋值运算符重载
原文作者:冯明德;补充说明:Shosh重点:包含动态分配成员的类 应提供拷贝构造函数,并重载"="赋值操作符。 以下讨论中将用到的例子: class CExample{public: CExample(){pBuffer=NULL; nSize=0;} ~CExample(){delete pBuffer;} void Init(int n){ pBuffer=new...2010-04-26 17:20:15 · 121 阅读 · 0 评论 -
C++中引用传递与指针传递区别(进一步整理)
从概念上讲。指针从本质上讲就是存放变量地址的一个变量,在逻辑上是独立的,它可以被改变,包括其所指向的地址的改变和其指向的地址中所存放的数据的改变。而引用是一个别名,它在逻辑上不是独立的,它的存在具有依附性,所以引用必须在一开始就被初始化,而且其引用的对象在其整个生命周期中是不能被改变的(自始至终只能依附于同一个变量)。在C++中,指针和引用经常用于函数的参数传递,然而,指针传递参数和引...2010-04-26 21:10:09 · 491 阅读 · 0 评论 -
C/C++头文件一览
C/C++头文件一览 ( C、传统 C++#include <assert.h> //设定插入点#include <ctype.h> //字符处理#include <errno.h> //定义错误码#include <float.h> //浮点数处理#include <fstream.h> //文件输入...2010-04-26 23:08:39 · 92 阅读 · 0 评论 -
c++ 头文件的作用
头文件每个C++/C程序通常分为两个文件。一个文件用于保存程序的声明(declaration),称为头文件。另一个文件用于保存程序的实现(implementation),称为定义(definition)文件。C++/C程序的头文件以“.h”为后缀,C程序的定义文件以“.c”为后缀,C++程序的定义文件通常以“.cpp”为后缀(也有一些系统以“.cc”或“.cxx”为后缀)。1.1 版权...2010-04-28 20:08:16 · 241 阅读 · 0 评论 -
stdafx.h作用及原理
刚刚用VS测试发现,include"stdafx.h"后可以不用include<iostream> using namespace std;了,这验证了本文最后红色的那几段话。不知道"stdafx.h"是怎么选择包含其它头文件的,是最常用的?貌似,还可以在它里面添加新的头文件,这些为什么没有被自动包含进来?在项目的debug里面,我发现了projectname.pch文件,有1M大。(...2010-04-30 10:57:20 · 99 阅读 · 0 评论 -
static和const的比较和解释
static 是c++中很常用的修饰符,它被用来控制变量的存储方式和可见性,下面我将从 static 修饰符的产生原因、作用谈起,全面分析static 修饰符的实质。 static 的两大作用: 一、控制存储方式: static被引入以告知编译器,将变量存储在程序的静态存储区而非栈上空间。 1、引出原因:函数内部定义的变量,在程序执行到它的定义处时,编译器为它在栈上分配空间...2010-04-30 20:56:16 · 91 阅读 · 0 评论 -
C/C++编译过程理解
标准C和C++将编译过程定义为9个阶段(Phases of Translation): 1.字符映射(Character Mapping) 文件中的物理源字符被映射到源字符集中,其中包括三字符运算符的替换、控制字符(行尾的回车换行)的替换。许多非美式键盘不支持基本源字符集中的一些字符,文件中可用三字符来代替这些基本源字符,以??为前导。但如果所用键盘是美式键盘,有些编译器可能不对...2010-04-30 22:31:28 · 104 阅读 · 0 评论 -
几款常见C++编译器的比较
另外,就我个人的一点点经验来看,vs 2005中的C++编译器较VC6.0已经有非常大的进步,同是realse下的一个测试程序,VS2005编译得到的程序的效率比VC6有成倍的提高。进一步性能对比有待测试。不过对比较大型的C++项目来说,vs 2005是个不错的选择。 关于c++的编译器现在有很多,各有所长。不可能每个人都全部用过。 我想统计一下现在的主流编译器都有什么。linux,win...2010-04-30 22:58:13 · 327 阅读 · 0 评论 -
C++与Java比较(转)
“作为一名C++程序员,我们早已掌握了面向对象程序设计的基本概念,而且Java的语法无疑是非常熟悉的。事实上,Java本来就是从C++衍生出来的。” 然而,C++和Java之间仍存在一些显著的差异。可以这样说,这些差异代表着技术的极大进步。一旦我们弄清楚了这些差异,就会理解为什么说Java是一种优秀的程序设计语言。本附录将引导大家认识用于区分Java和C++的一些重要特征。 (1) 最大的障碍...2010-04-30 23:02:26 · 3719 阅读 · 0 评论 -
COM(Component Object Model)组件介绍
COM component(COM组件)是微软公司为了计算机工业的软件生产更加符合人类的行为方式开发的一种新的软件开发技术。在COM构架下,人们可以开发出各种各样的功能专一的组件,然后将它们按照需要组合起来,构成复杂的应用系统。由此带来的好处是多方面的:可以将系统中的组件用新的替换掉,以便随时进行系统的升级和定制;可以在多个应用系统中重复利用同一个组件;可以方便的将应用系统扩展到网络环境下;CO...原创 2013-01-15 17:38:04 · 330 阅读 · 0 评论