
C/C++基础知识
文章平均质量分 76
星空物语gplwz
好好学习,修炼内功
展开
-
C++中的关键字:explicit
C++中, 一个参数的构造函数(或者除了第一个参数外其余参数都有默认值的多参构造函数), 承担了两个角色。 1 是个构造器 ,2 是个默认且隐含的类型转换操作符。所以, 有时候在我们写下如 AAA = XXX, 这样的代码, 且恰好XXX的类型正好是AAA单参数构造器的参数类型, 这时候编译器就自动调用这个构造器, 创建一个AAA的对象。这样看起来好象很酷, 很方便。 但在某些转载 2014-04-15 21:33:30 · 599 阅读 · 0 评论 -
深入分析字符数组、字符串与'\0'
C语言中,有个问题困扰了很久,就是字符数组中到底包不包含'原创 2014-08-13 10:00:56 · 1827 阅读 · 0 评论 -
C语言中的类型转换
C语言的类型转换,可以分为两种:自动类型转换(隐式类型转换,有编译器帮你去完成)和强制类型转换(你知道自己想要什么,所以才转换)。 对于自动类型转换,最常见的就是混合运算以及赋值运算,还有一种就是函数值的类型转换赋值运算:自动把“=”右边的表达式的类型转换成“=”右边的变量的类型,例如 int a=4.5; a的值实际是4! 混合运算:就是一个运算表达式当中包含了多个类型原创 2014-07-28 10:15:23 · 701 阅读 · 0 评论 -
枚举类型enum
枚举类型的使用方法一般的定义方式如下:enum enum_type_name{ENUM_CONST_1,ENUM_CONST_2,...ENUM_CONST_n} enum_variable_name;注意:enum_type_name是自定义的一种数据数据类型名,而enum_variable_name为enum_type_name类型的一个变量,也原创 2014-04-10 19:12:31 · 1214 阅读 · 0 评论 -
结构体之柔性数组
也许你从来没有听说过柔性数组(flexible array)这个概念,但是它确实是存在的。C99中,结构中的最后一个元素允许是未知大小的数组,这就叫做柔性数组成员,但结构中的柔性数组成员前面必须至少一个其他成员。柔性数组成员允许结构中包含一个大小可变的数组。sizeof返回的这种结构大小不包括柔性数组的内存。包含柔性数组成员的结构用malloc ()函数进行内存的动态分配,并且分配原创 2014-04-10 18:39:51 · 987 阅读 · 0 评论 -
深入分析指针常量、常量指针
关键要看const修饰的是谁:首先一点:int const与const int的写法是一样的. 从左向右,看const离谁( 究竟是‘*’, 还是‘指针变量名’)比较近就是修饰谁的,比如 const * p :表示*p是常量,也就是*p 不可变 (暗示p可变,const没有修饰p) * const p :表示p是常量,也就是p不可变 (暗示*原创 2014-04-01 11:04:55 · 532 阅读 · 0 评论 -
深入分析C、C++值传递、
C/C++语言中函数参数的传递有:值传递,地址传递,引用传递这三种形式. 所有的函数都使用在程序运行栈(run-time stack) 中分配的存储区该存储区一直保持与该函数相关联直到函数结束为止那时存储区将自动释放以便重新使用该函数的整个存储区被称为活动记录(activation record). 系统在函数的活动记录中为函数的每个参数都提供转载 2014-04-01 10:58:51 · 505 阅读 · 0 评论 -
C语言运算符优先级和口诀
一共有十五个优先级: 1 () [] . ->2 ! ~ -(负号) ++ -- &(取变量地址)* (type)(强制类型) sizeof 3 * / %4 + - 5 >> 6 > >= 7 == != 8 & 9 ^ 10 | 11 &&12 ||13 ?转载 2014-04-02 22:54:34 · 673 阅读 · 0 评论 -
关键字static、const、volatile的作用
关键字static的作用是什么?这个简单的问题很少有人能回答完全。在C语言中,关键字static有三个明显的作用:1、在函数体,一个被声明为静态的变量在这一函数被调用过程中维持其值不变。2、 在模块内(但在函数体外),一个被声明为静态的变量可以被模块内所有函数访问,但不能被模块外其它函数访问。它是一个本地的全局变量。3、在模块内,一个被声明为静态的函数只可被这一模块内的其它转载 2014-04-02 15:34:07 · 922 阅读 · 1 评论 -
野指针及其避免
野指针:利用指针你可以将数据写入内存中的任意位置,但是,一旦你的程序中有一个野指针("wild“pointer),即指向一个错误位置的指针,你的数据就危险了—存放在堆中的数据可能会被破坏,用来管理堆的数据结构也可能会被破坏,甚至操作系统的数据也可能会被修改,有时,上述三种破坏情况会同时发生。注意:“野指针”不是NULL指针,是指向被释放的或者访问受限内存的指针。 人们转载 2014-04-01 11:02:20 · 597 阅读 · 0 评论 -
指针赋值为NULL;是什么意思呢?
int *p=NULL;这个NULL是什么意思? 网上百度了下,有人说NULL=0;是在头文件中定义的; 首先要说的是:非堆分配的内存是不需要free的。 再说p=NULL;指针的变化是 p指向了一个地址为0的内存,这就提醒别人不要对这个指针进行解引用的操作。NULL其实就是0x0。p=NULL后,p指向0x0这个地址。此处的地址,你没有访问权限。原创 2014-04-02 09:41:43 · 17228 阅读 · 3 评论 -
C++ 静态成员
静态成员的提出是为了解决数据共享的问题。原创 2014-05-06 22:50:58 · 807 阅读 · 0 评论 -
数组名作为函数参数
数组元素作函数实参数组元素就是下标变量,它与普通变量并无区别。 因此它作为函数实参使用与普通变量是完全相同的,在发生函数调用时,把作为实参的数组元素的值传送给形参,实现单向的值传送。原创 2014-04-21 15:31:52 · 1751 阅读 · 0 评论 -
C++拷贝构造函数(深拷贝,浅拷贝)
对于普通类型的对象来说,它们之间的复制是很简单的,例如:int a=88;int b=a; 而类对象与普通对象不同,类对象内部结构一般较为复杂,存在各种成员变量。下面看一个类对象拷贝的简单例子。#include iostream>using namespace std;class CExample {private: int原创 2014-08-17 17:13:26 · 469 阅读 · 0 评论