
C++
snlying
坚持下去,坚持到最后你会实现理想的,疯狂学习中,努力,努力,勤奋学习。把一件事情做到极致是一种品质!
展开
-
#ifndef#define#endif的用法(整理)
你所遇到的这几个宏是为了进行条件编译。一般情况下,源程序中所有的行都参加编译。但是有时希望对其中一部分内容只在满足一定条件才进行编译,也就是对一部分内容指定编译的条件,这就是“条件编译”。有时,希望当满足某条件时对一组语句进行编译,而当条件不满足时则编译另一组语句。 条件编译命令最常见的形式为: #ifdef 标识符 程序段1 #e转载 2008-09-03 19:25:00 · 1126 阅读 · 0 评论 -
C++数组初始化
int a[256]={0};是把a的所有元素初始化为0。如果初始化时指定的的元素个数比数组大小少,剩下的元素都回被初始化为 0。例如 int v5[8]={1,2,3,4}; 等价于 int v5[8]={1,2,3,4,0,0,0,0};转载 2009-03-19 17:17:00 · 709 阅读 · 0 评论 -
字符指针变量和字符数组的区别
虽然用字符指针变量和字符数组都能表示和处理字符串,但它们二者之间是有区别的,不应混淆。 (1)字符数组由若干个元素组成,每个元素中存放字符串的一个字符,而字符指针变量中存放的是字符串的首地址。 (2)初始化方式不同。对字符数组初始化要用stati‘c存储类别,在编译时进行。而对字符指针变量初始化不必加static,在实际执行时进行。 (3)赋值方式不同。对字符转载 2009-03-19 17:29:00 · 1287 阅读 · 0 评论 -
realloc 用法
最近在写source code时需要在数组的buffer小时重新申请一块buffer,故找了一些资料,乖乖,竟然原指针还可以“漂移”。。。。。。realloc 原型:extern void *realloc(void *mem_address, unsigned int newsize); 用法:#include 有些编译器需要#include 功能:改变mem_address所指内存区转载 2009-03-19 17:32:00 · 62961 阅读 · 18 评论 -
C语言指针的初始化和赋值
最近写了一个小程序,遇到一点小问题,是关于指向字符串的指针的。由此一发不可收拾,好奇心驱使我决定研究一下指针的初始化和赋值规则。略有所得之后,执笔记下,以备后用。1、指针的初始化初看起来,指针的初始化和赋值好像很混乱,又是*,又是&,时不时又出来一个数组。其实总结起来很简单:int *p; int a=25; int b[10];int *m=&a;int *n=b;转载 2009-03-19 17:28:00 · 740 阅读 · 0 评论 -
C++经典面试题(验证你的C++水准)
1.介绍一下STL,详细说明STL如何实现vector。 4.指针和引用有什么分别;如果传引用比传指针安全,为什么?如果我使用常量指针难道不行吗? 5.参数传递有几种方式;实现多态参数传递采用什么方式,如果没有使用某种方式原因是什么; 6.结合一个项目说明你怎样应用设计模式的理念。 7.介绍一下你对设计模式的理解。(这个过程中有很多很细节的问题随机问的) 8.C++和C定义结构的分别是什么。 9.转载 2009-05-18 16:25:00 · 1046 阅读 · 1 评论 -
C++基本概念总结(static小结)
/ c++基本概念总结,笔试必考static用法小结 static关键字是C, C++中都存在的关键字, 它主要有三种使用方式, 其中前两种只指在C语言中使用, 第三种在C++中使用(C,C++中具体细微操作不尽相同, 本文以C++为准).(1)局部静态变量(2)外部静态变量/函数(3)静态数据成员/成员函数下面就这三种使用方式及注意事项分别说明一、局部静态变量转载 2009-08-14 21:12:00 · 1554 阅读 · 0 评论 -
类成员的三级存取
三级存取:共有(public)、私有(private)、保护(protected). 对于在public域中声明的数据成员和函数成员(也叫做成员函数),程序中其他类的对象或操作都能请求该类的对象执行它们,因此这些数据成员和成员函数构成类的界面部分。 在private域和protected 域中声明的数据成员和成员函数构成类的私有部分,只能由该类的对象和成员函数,以及被声明为友元(f原创 2009-08-16 15:29:00 · 757 阅读 · 0 评论 -
华为C笔试真题,希望对即将找工作的人有一些帮助啊!
华为C笔试题目1、 找错void test1(){ char string[10]; char* str1="0123456789"; strcpy(string, str1);}表面上并且编译都不会错误。但如果string数组原意表示的是字符串的话,那这个赋值就没有达到意图。最好定义为char string[11],这样最后一个元素可以存储字符串结尾符/0;void tes转载 2009-08-14 20:51:00 · 1652 阅读 · 0 评论 -
关于const对象定义在头文件中
摘自《C++ Primer 4nd》 一些const对象定义在头文件中。而const变量要成为常量表达式,初始化式必须为编译器可见。为了能够让多个文件使用相同的值,const变量和它的初始化式必须是每个文件可见的。而要使初始化式可见,一般把这样的const变量定义在头文件中。那样的话,无论该const变量何时使用,编译器都能够看见其初始化式。但是,C++中的任原创 2009-09-06 11:23:00 · 5604 阅读 · 0 评论 -
预处理器的介绍
1.头文件中经常需要其他头文件2.避免多重包含基于以上两点,引入预处理器。 预处理器变量的名字在程序中必须是唯一的。任何与预处理器变量相匹配的名字的使用都关联到该处理器变量。为了避免名字冲突,预处理器变量经常用全大写字母表示。预处理器变量有两种状态:已定义或未定义。定义预处理器变量和检测其状态所用的预处理器指示不同。 #define指示接受一个名字并定义该名字为原创 2009-09-06 11:43:00 · 891 阅读 · 0 评论 -
接口与实现
接口与实现:接口是由某种类型支持的操作。设计良好的类分离了接口与实现,在类的public部分定义接口,private部分定义实现。数据成员一般是实现的一部分。1)当函数成员是期望该类型的使用者使用的操作时,函数成员就是接口的一部分(因此为public);2)当函数成员执行类所需要的、非一般性使用的操作时,函数成员就是实现的一部分。网友:公有接口是类的抽象组件,类函数定义是实现细节,原创 2009-09-06 15:05:00 · 584 阅读 · 0 评论 -
当将超过取值范围的值赋给某一类型时,会产生什么样的结果呢?
在C++中,把负值赋给unsigned对象是完全合法的,其结果是该负数对该类型的取值个数求模后的值。所以,如果把-1赋给8位的unsigned char, 那么结果是255,因为255是-1对256求模后的值。 当将超过取值范围的值赋给signed类型时,由编译器决定实际赋得值。在实际操作中,很多的编译器处理signed类型的方式和unsigned类型类似。也就是说,取值时取该值对该类型原创 2009-09-06 15:24:00 · 1084 阅读 · 0 评论 -
关于作用域的问题
C++含有以下作用域:全局:名字定义在任何其他作用域外。类:名字由类定义。命名空间:名字在命名空间中定义。局部:名字在函数内定义。块:名字定义在语句块中,也就是说,定义在一对花括号里。语句:名字在语句(如 if、 while和for语句)的条件内定义。作用域可嵌套。例如,在全局作用域中声明的名字在函数作用域和语句作用域中都可以访问。对于内置类型来说,初始化取决于作用原创 2009-09-06 15:26:00 · 869 阅读 · 1 评论 -
(int)a、&a、(int)&a、(int&)a的区别,很偏僻的题
#include #include #include #include using namespace std;int main(){ float a = 1.0f; cout cout cout cout cout cout /*(int&)a:将a的引用强制转换为整型,意思是a所在的内存,本来定义的时候为float类型,并初始为1.0f, 但现在我要按int类型解释这段转载 2009-10-10 11:12:00 · 1919 阅读 · 0 评论 -
各种排序算法的稳定性和时间复杂度小结
各种排序算法的稳定性和时间复杂度小结 收藏 选择排序、快速排序、希尔排序、堆排序不是稳定的排序算法,冒泡排序、插入排序、归并排序和基数排序是稳定的排序算法。 冒泡法: 这是最原始,也是众所周知的最慢的算法了。他的名字的由来因为它的工作看来象是冒泡: 复杂度为O(n*n)。当数据为正序,将不会有交换。复杂度为O(0)。直接插入排序:O(n*n)选择排序:O(n*n)快速排序:转载 2009-10-24 21:23:00 · 988 阅读 · 0 评论 -
字符串拷贝的问题
前段时间想写个拷贝字符串的程序,后来觉得太危险了:for (int i = 0; i { StrLog[i] = wcsBuf[i]; } 网友的: 编程实现函数void strcopy(char *dest,char *src),要求该函数实现将src中的内容拷贝到dest中。(不许直接调用其他函数来实现)#include #include#inclu原创 2009-03-11 09:24:00 · 778 阅读 · 0 评论 -
main函数的参数
----------------------简单的说:-----------------------执行程序的命令行参数 void main(int argc,char * argv[]) 很多程序都是需要从命令行输入参数的。如,在dos中的拷贝命令需要两个参数 c:/copy file1 file2 argc表示参数个转载 2008-09-07 10:05:00 · 1131 阅读 · 1 评论 -
面向对象的三个基本特征(讲解)_转载
面向对象的三个基本特征(讲解)面向对象的三个基本特征是:封装、继承、多态。封装封装最好理解了。封装是面向对象的特征之一,是对象和类概念的主要特性。封装,也就是把客观事物封装成抽象的类,并且类可以把自己的数据和方法只让可信的类或者对象操作,对不可信的进行信息隐藏。继承面向对象编程 (OOP) 语言的一个主要功能就是“继承转载 2008-09-07 07:41:00 · 714 阅读 · 0 评论 -
sizeof和strlen区别和使用方法
一、sizeof的概念 sizeof是C语言的一种单目操作符,如C语言的其他操作符++、--等。它并不是函数。sizeof操作符以字节形式给出了其操作数的存储大小。操作数可以是一个表达式或括在括号内的类型名。操作数的存储大小由操作数的类型决定。 二、sizeof的使用方法 1、用于数据类型 sizeof使用形式:sizeof(type)数据类型必须用括号括住。如sizeof转载 2008-09-03 18:18:00 · 2356 阅读 · 2 评论 -
bool , float, 指针变量与“零值”比较的标准风格
if ( flag ) if ( !flag ) 如下写法均属不良风格,不得分。 if (flag == true) if (flag == 1 ) if (flag == false) if (flag == 0) 请写出 float x 与“零值”比较的转载 2008-09-03 19:03:00 · 1651 阅读 · 0 评论 -
#include 与 #include “filename.h” 有区别
对于#include ,编译器从标准库路径开始搜索 filename.h 对于#include “filename.h” ,编译器从用户的工作路径开始搜索 filename.h转载 2008-09-03 19:42:00 · 1183 阅读 · 0 评论 -
C++中extern “C”含义深层探索
1.引言 C++语言的创建初衷是“a better C”,但是这并不意味着C++中类似C语言的全局变量和函数所采用的编译和连接方式与C语言完全相同。作为一种欲与C兼容的语言,C++保留了一部分过程式语言的特点(被世人称为“不彻底地面向对象”),因而它可以定义不属于任何类的全局变量和函数。但是,C++毕竟是一种面向对象的程序设计语言,为了支持函数的重载,C++对全局函数的处理方式与C有转载 2008-09-03 20:17:00 · 612 阅读 · 0 评论 -
什么是hash表
什么是hash表?2007-02-05 13:09简单来说,hash就是找到一种数据内容和数据存放地址之间的映射关系。比如,由若干字符串要存放到一个哈西表中,希望能够在O(1)的时间内在表中定位某个特定的字符串,我们可以用数组来实现哈西表,找到某种函数sting -> integer,记为 p = f(s),其中p是一个整数,s是一个字符串,p就是转载 2008-09-03 20:32:00 · 1066 阅读 · 0 评论 -
const的思考(柴凯)
1、什么是const? 常类型是指使用类型修饰符const说明的类型,常类型的变量或对象的值是不能被更新的。(当然,我们可以偷梁换柱进行更新:) 2、为什么引入const? const 推出的初始目的,正是为了取代预编译指令,消除它的缺点,同时继承它的优点。3、cons有什么主要的作用? (1)可以定义const常量,具有不可变性。 例如:转载 2008-09-04 14:18:00 · 566 阅读 · 0 评论 -
const用法小结
1. const常量,如const int max = 100; 优点:const常量有数据类型,而宏常量没有数据类型。编译器可以对前者进行类型安全检查,而对后者只进行字符替换,没有类型安全检查,并且在字符替换时可能会产生意料不到的错误(边际效应)2. const 修饰类的数据成员。如:转载 2008-09-04 14:21:00 · 583 阅读 · 0 评论 -
经典的strcpy 函数
已知strcpy 函数的原型是char *strcpy(char *strDest, const char *strSrc);其中strdest 是目的字符串,strsrc 是源字符串。 (1)不调用c++/c 的字符串库函数,请编写函数 strcpy(2)strcpy 能把strsrc 的内容复制到strdest,为什么还要char * 类型的返回值?(转载 2008-09-04 14:31:00 · 830 阅读 · 0 评论 -
ASSERT用法
ASSERT()是一个调试程序时经常使用的宏,在程序运行时它计算括号内的表达式,如果表达式为FALSE (0), 程序将报告错误,并终止执行。如果表达式不为0,则继续执行后面的语句。这个宏通常原来判断程序中是否出现了明显非法的数据,如果出现了终止程序以免导致严重后果,同时也便于查找错误。例如,变量n在程序中不应该为0,如果为0可能导致错误,你可以这样写程序: ......转载 2008-09-04 15:01:00 · 832 阅读 · 0 评论 -
构造函数、析构函数与赋值函数
编写类string 的构造函数、析构函数与赋值函数(25 分) 已知类string 的原型为: class string { public: string(const char *str = null); // 普通构造函数string(const string &other); // 拷贝构造转载 2008-09-05 16:58:00 · 669 阅读 · 0 评论 -
C++中的typename和class对比
在模板中,定义模板类型template和template都是一样的。C++书上说,因为template里面的class和类定义class名字有重合,为了防止歧义,引入typename来取代template中的class。但是,typename并不完全等于class的作用。typename还有一个作用。下面以STL中的源码 在STL中的map源代码文件中,看到map的如下定义转载 2008-09-05 19:25:00 · 953 阅读 · 0 评论 -
C/C++中typedef struct和struct的用法[转。不知出自何处]
C/C++中typedef struct和struct的用法 struct _x1 { ...}x1; 和 typedef struct _x2{ ...} x2; 有什么不同? 其实, 前者是定义了类_x1和_x1的对象实例x1, 后者是定义了类_x2和_x2的类别名x2 , 所以它们在使用过程中是有取别的.请看转载 2008-09-05 19:31:00 · 1295 阅读 · 0 评论 -
struct 定义在C++与C中的区别
struct S{ //};在VC6中,如果是cpp后缀名那么是没有问题的,但是如果后缀名为c,那么就会出现 error C2081 等错误,意思就是 S 没有定义等。应该写成下面的定义方式 typedef struct tagS{ //}S;转载 2008-09-05 20:22:00 · 4196 阅读 · 1 评论 -
字符数组,字符指针,Sizeof总结
1.以字符串形式出现的,编译器都会为该字符串自动添加一个0作为结束符,如在代码中写 "abc",那么编译器帮你存储的是"abc/0"2."abc"是常量吗?答案是有时是,有时不是。 不是常量的情况:"abc"作为字符数组初始值的时候就不是,如 char str[] = "abc"; 因为定义的是一个字符数组,所以就相当于定义了一转载 2008-09-07 14:55:00 · 677 阅读 · 0 评论 -
C++中class与struct的区别
关于使用大括号初始化class和struct如果定义了构造函数的话,都不能用大括号进行初始化如果没有定义构造函数,struct可以用大括号初始化。如果没有定义构造函数,且所有成员变量全是public的话,可以用大括号初始化。 关于默认访问权限class中默认的成员访问权限是private的,而struct中则是public的。关于继承方式class继转载 2008-09-05 19:20:00 · 7240 阅读 · 2 评论 -
数据对齐 字节对齐
数据对齐 字节对齐文章出处:飞诺网(www.firnow.com):http://dev.firnow.com/course/3_program/c++/cppjs/2008717/133438.html转载 2011-02-12 21:57:00 · 797 阅读 · 0 评论