C/C++
文章平均质量分 82
chuanwang66
软件工程专业
展开
-
scanf()的返回值
http://blog.csdn.net/linuxxulin/article/details/7018321 不经意中发现scanf()的返回值问题,自己试验和了解了一下,一些所知与各位分享;void main() { int a;int b;int c;printf("请输入三个整数:");int x=scanf("%d%d%d",&a,&b...原创 2012-02-26 21:02:00 · 98 阅读 · 0 评论 -
C++类对象创建过程揭密(转载)
转载:http://blog.csdn.net/houdy/article/details/1714906 介绍 初看到这个 题目,你可能会有些疑惑:C++类对象的创建还有什么好说的,不就是调用构造函数么?实际上情况并不是想象中的那么简单,大量的细节被隐藏或者被忽略了, 而这些细节又是解决一些其他问题的关键,所以我们很有必要深入到这块"神秘"的区域,去探索鲜为人知的秘密。 ...原创 2013-05-24 16:56:36 · 98 阅读 · 0 评论 -
模板和泛型编程???从P269继续
参考书<C++ By Dissection> In C++, there are 3 different ways toemploy generic coding techniques: void*pointers, Templates, Inheritance. ...原创 2012-04-22 09:58:34 · 78 阅读 · 0 评论 -
命名空间(一)
一、 为什么需要命名空间(问题提出)——同一作用域中,相同名字发生冲突 命名空间是ANSIC++引入的可以由用户命名的作用域,用来处理程序中 常见的同名冲突。 在 C语言中定义了3个层次的作用域,即文件(编译单元)、函数和复合语句。C++又引入了类作用域,类是出现在文件内的。在不同的作用域中可以定义相同名字的变量,互不于扰,系统能够区别它们。 1、全局变量的作用...原创 2012-04-19 09:58:36 · 125 阅读 · 0 评论 -
命名空间(二)
接上一篇《命名空间(一)》,上一篇将的是基本的使用,本节我认为是比较细节的部分了。 五、无名的命名空间——替代全局静态变量/函数 以上介绍的是有名字的命名空间,C++还允许使用没有名字的命名空间,如在文件A中声明了以下的无名命名空间://命名空间没有名字namespace{ //定 义命名空间成员 void fun( ){ cout&...原创 2012-04-19 11:48:39 · 94 阅读 · 0 评论 -
C/C++中内存模型
一直以来,C++中内存模型和Java内存模型结构就是困扰我的大问题,这在面试中也经常考到。经过长期卓绝地学习,终于得到下面这个最终解决方案:) C++内存分为5个区域(堆栈全常代 ): 1. 堆 heap : 由new分配的内存块,其释放编译器不去管,由我们程序自己控制(一个new对应一个delete)。如果...原创 2012-12-30 11:07:38 · 83 阅读 · 0 评论 -
填充与对齐——指定变量的地址偏移【转】
转自 http://hi.baidu.com/bai_yechuang/item/34bff9ba6dff3cdf84dd79c0 前言 由于填充与对齐与硬件架构有很大关系,所以填充与对齐在一般的编程工作中很少涉及,但网站还是有不少关于对齐的技术文章。坦白的说,我并不认为这些文章抓住了要点,或者说,即使那些作者自己抓住了要点但并没有描述清楚。也许我看的这方面文章不多,但我想就这个...原创 2013-11-08 14:53:49 · 288 阅读 · 0 评论 -
C/C++柔性数组 char[0]
在标准C和C++中0长数组如charArray[0]是不允许使用的,因为这从语义逻辑上看,是完全没有意义的。但是,GUN中却允许使用,而且,很多时候,应用在了变长结构体中,如:StructPacket{Int state;Int len;Char cData[0]; //这里的0长结构体就为变长结构体提供了非常好的支持}; 首先对0长数组做一个解释:用途 :长度为0的数组的主要用途是为了满足需要变...原创 2013-11-08 15:57:28 · 472 阅读 · 0 评论 -
new, operator new 和 placement new
一、new 和 delete 的过程:在进行一切讲解之前,首先,要了解两点:第一, new 和delete都是C++中的关键字第二, new不能被重载,它的行为总是一致的(delete相同,顺序相反): (1) 先调用operator new分配内存 (2) 在调用构造函数初始化那段内存中的对象 (3) 返回...原创 2013-12-12 17:08:33 · 116 阅读 · 0 评论 -
关于size_t 和 ptrdiff_t 【转】
AbstractIntroductionsize_t typeptrdiff_t typePortability of size_t and ptrdiff_tSafety of ptrdiff_t and size_t types in address arithmeticPerformance of code using ptrdiff_t and size_t...原创 2013-12-12 18:57:50 · 210 阅读 · 0 评论 -
string.h(二)C的字符串分隔函数strtok()
char *strtok(char *str1, char *str2); strtok()用来将字符串分割成一个个片段。参数s指向欲分割的字符串,参数delim则为分割字符串,当strtok()在参数s的字符串中发现到参数delim的分割字符时则会将该字符改为\0 字符。在第一次调用时,strtok()必需给予参数s字符串(此时返回分割符前面的字符串),往后的调用则将参数s设置成N...原创 2013-12-19 13:25:21 · 486 阅读 · 0 评论 -
C++引用计数
主要参考《提高C++性能的编程技术》第12章 引用计数 设计思路1. rc.h中:(1) 提供RCObject,内部封装了refCount及其基本加减操作;(2) 提供RCPtr,是一个智能指针。普通的智能指针内部封装一个基本类型的指针,但这里的智能指针内部封装的是指向RCObject类型的指针。因此,这个智能指针可以根据RCObject维护的引用计数变量refCount来...原创 2013-12-29 14:48:07 · 303 阅读 · 0 评论 -
C++四个类型转换关键字const_cast, static_cast, dynamic_cast, reinterpret_cast
C风格的强制类型转换(Type Cast)很简单,不管什么类型的转换统统是:TYPE b = (TYPE)a。C++风格的类型转换提供了4种类型转换操作符来应对不同场合的应用。const_cast,字面上理解就是去const属性。static_cast,命名上理解是静态类型转换。如int转换成char。dynamic_cast,命名上理解是动态类型转换。如子类和父类之间的多态类型转换。re...原创 2013-02-27 10:13:20 · 158 阅读 · 0 评论 -
细说C++全局变量、局部变量和静态局部变量【转】
转自http://see.xidian.edu.cn/cpp/biancheng/view/61.html全局变量和局部变量在函数这一章节中,我们说过函数体内声明的变量仅在该函数体内有效,别的函数是无法使用的。并且在函数运行结束后,这些变量也将消失了。我们把这些在函数体内声明的变量称为局部变量(Local Variable)。 然而,可能会遇到这样的问题:我们想要创建一个变量作为数...原创 2013-08-15 17:17:59 · 167 阅读 · 0 评论 -
C++调用C
一般地,C++调用C有两种形式(网上资料一般没讲全): (1)被调用的C没有头文件 (2)被调用的C有头文件 下面一并举例: fun1.c#include <stdio.h>void fun1(){ printf("in fun1()\n");} fun1.h#if...原创 2012-11-29 22:42:42 · 70 阅读 · 0 评论 -
关于计算精度
本文是Sam我总结的,在C++学习过程中常见的一些涉及计算精度的问题,可谓明察秋毫之作! 1. 计算过程使用高精度类型(如,double),转型(如,最终结果转换为int)放在最后一步完成 举例:(最少乘法次数,C++)/*题目描述:给你一个非零整数,让你求这个数的n次方,每次相乘的结果可以在后面使用,求至少需要多少次乘。如24:2*2=22(第一次...原创 2012-11-22 14:53:31 · 1150 阅读 · 0 评论 -
指针(二)、常量指针、指针常量、迭代器常量、常量迭代器
参见这里 ==> http://www.cnblogs.com/xfxsworld/archive/2008/01/30/1059303.html 常量指针与指针常量常量指针,就是指向常量的指针,关键字 const 出现在 * 左边,表示指针所指向的地址的内容是不可修改的,但指针自身可变。 指针常量,指针自身是一个常量,关键字 const 出现在 * 右边,表示指针自...原创 2012-04-12 22:33:49 · 321 阅读 · 0 评论 -
C文件操作(二)——流文件freopen() 输入输出重定向、打表格
一、freopen()输出输出重定向(到文件) 当我们求解acm题目时,通常在设计好算法和程序后,要在调试环境(例如VC等)中运行程序,输入测试数据,当能得到正确运行结果后,才将程序提交到oj中。但由于调试往往不能一次成功,每次运行时,都要重新输入一遍测试数据,对于有大量输入数据的题目,输入数据需要花费大量时间。 使用freopen函数可以解决测试数据输入问题,...原创 2012-02-28 10:25:23 · 349 阅读 · 0 评论 -
C/C++基本数据类型
参考资料:(1) 64位与32位编程的数据类型区别(C/C++): http://blog.csdn.net/harbinzju/article/details/5785024(2) 指针运算: http://blog.csdn.net/hbuxiaoshe/article/details/5785575 C/C++仅仅定义了这些基本数据类型之间的关系,并没有定义严格定义...原创 2012-02-29 07:53:18 · 179 阅读 · 0 评论 -
C++内嵌汇编(一):反汇编分析C++代码
注:本文是“百度文库”中下载的文章^^谢谢作者 Sam: 使用binutils-2.23.1这个软件中的小工具objdump -d *.o 可以对一个目标文件进行反汇编:)了解反汇编的一些小知识对于我们在开发软件时进行编程与调试大有好处,下面以 VS2008 环境下的 VC++ 简单介绍一下反汇编的一些小东西!1 、新建简单的 VC 控制台应用程序 A 、打开 Micr...原创 2012-03-01 11:13:06 · 598 阅读 · 0 评论 -
string.h(一)memset, memcpy, strcpy/strncpy, strcat/strncat, strlen, ...
文章结构:一、string.h中声明的重要函数二、memset()详解三、strcpy()和strncpy()详解***********************************************************************************************************************************...原创 2012-03-04 10:44:07 · 135 阅读 · 0 评论 -
运算符重载
C++之运算符重载(1):http://www.cnblogs.com/CaiNiaoZJ/archive/2011/08/12/2136598.html C++之运算符重载(2):http://www.cnblogs.com/CaiNiaoZJ/archive/2011/08/13/2137033.html原创 2012-03-04 16:12:55 · 75 阅读 · 0 评论 -
C++中的内联函数inline
在c++中,为了解决一些频繁调用的小函数大量消耗栈空间或者是叫栈内存的问题,特别的引入了inline修饰符,表示为内联函数。 可能说到这里,很多人还不明白什么是栈空间,其实栈空间就是指放置程序的局部数据也就是函数内数据的内存空间,在系统下,栈空间是有限的,如果频繁大量的使用就会造成因栈空间不足所造成的程序出错的问题,函数的死循环递归调用的最终结果就是导致栈内存空间枯竭。 下面我们来...原创 2012-07-13 19:16:33 · 67 阅读 · 0 评论 -
指针(一)、指针运算;指针常量,指针变量
指针运算参见这里==> http://c.jpkc.cqepc.com.cn/c_resource/C_Cai_assistant/9/9-2.htm #include <iostream>using namespace std;/* 输出: 10 20 30 40 500x7e17f010...原创 2012-03-24 12:58:19 · 130 阅读 · 0 评论 -
C调用汇编
一、汇编语言的两种语法格式 Intel格式: 大多数DOS、Windows环境采用AT&T格式:Unix和Linux系统采用(GCC编译器也采用AT&T) 详见附件《Linux 汇编器:对比 GAS 和 NASM》http://www.ibm.com/developerworks/cn/linux/l-gas-nasm.html#sidebar ...原创 2013-03-27 20:28:08 · 157 阅读 · 0 评论 -
static关键字
C++的static关键字作者:韩耀旭 C++的static有两种用法:面向过程程序设计中的static和面向对象程序设计中的static。前者应用于普通变量和函数,不涉及类;后者主要说明static在类中的作用。一、面向过程设计中的static1、静态全局变量在全局变量前,加上关键字static,该变量就被定义成为一个静态全局变量。我们先举一个静态全局变量的例子,如下:...原创 2012-04-09 20:02:10 · 68 阅读 · 0 评论 -
关于extern声明全局变量(转)
这篇文章主要讲解一下extern声明全局变量的一些用法,虽然知识点比较浅显,但是却容易犯错,仅与那些初学C++的朋友分享,希望没有让大牛们见笑。 一、“声明” 和 “全局变量”extern最基本的用法是声明全局变量的。这里需要注意两点,一是“声明”,二是“全局变量”;我们先来分析这两个概念。声明:声明和定义是有区别的。声明不等于定义,声明只是指出了变量的名字,并没有为其分配存储...原创 2012-04-09 20:43:38 · 291 阅读 · 0 评论 -
C++虚函数表(转)
C++ 虚函数表解析 (陈皓http://blog.csdn.net/haoel) 在此之前推荐看两个资料:1. c++大学教材(蚂蚁书)介绍多态的那章,尤其是其中虚函数调用的一个图简直精辟得令人发指 2. http://m.baidu.com/bd_page_type=1/pu=sz%401320%5F1002%2Cusm%400%2Cta%40iphone%5F2%...原创 2012-04-11 08:50:32 · 122 阅读 · 0 评论 -
C文件操作(一)
C文件操作(流式文件 & I/O文件) 在ANSI C中,对文件的操作分为两种方式,即流式文件操作和I/O文件操作。 一、流式文件操作 这种方式的文件操作有一个重要的结构FILE,FILE在stdio.h中定义如下: typedef struct{ int level; /* fill/empty level of buffer *...原创 2012-11-07 19:11:55 · 143 阅读 · 0 评论 -
C++随机数
C++随机数 #include<iostream>#include<ctime>using namespace std;int main(){ /* 1. 在调用rand()之前未显式调用srand(seed),则默认在rand()之前调用srand(1);一次 ==> 每次运行,下面两个随机数序列都一样 */ ...原创 2012-11-07 19:41:23 · 122 阅读 · 0 评论 -
数组和指针并不同(总结《C专家编程chap4》)
左值(地址)和右值(地址的内容): 1. 使用数组_直接引用:因为符号表中,符号a对应的值就是a数组的首地址。2. 使用指针_间接引用:因为符号表中,符号p的值是“地址”,需要从内存中取得对应的“地址的内容”,然后才能像“访问数组元素”那样进行元素的访问。 混合两种方式: 代码示例: #include <iostream>using n...原创 2013-10-06 14:55:18 · 96 阅读 · 0 评论