- 博客(28)
- 资源 (3)
- 收藏
- 关注
转载 VS项目配置中 C++目录--包含目录(or库目录继承值的删除问题)
转自:http://blog.sina.com.cn/s/blog_8913a1d3010188wz.html
2014-08-22 11:56:26 1338
原创 关于局部指针的一点总结
经常碰到的问题,碰到函数局部变量指针的时候会出错。那么C++中函数局部变量指针是如何释放的呢?在函数内定义的变量所占的内存会在函数返回时被清空,因此若是以局部变量做返回值,会返回一个空值。具体说一下:当编译器为函数调用产生代码时,它会先将所有的参数压栈,然后将返回地址压入栈中,最后为局部变量在栈中开辟空间,结构如下(栈顶在上方): 函数参数
2014-08-06 10:30:36 2378
原创 C++输出数据到txt
平时总遇到将数据写到txt中的情况,尤其是在调试程序看中间结果时,所以将代码保存下来,方便以后应用: ofstream outfile; string InitialFileName("Initial.txt"); string NewFileName("New.txt"); outfile.open(InitialFileName, ostream::app); /*
2014-07-15 15:10:31 9828
转载 C++数组作为函数参数的几个问题
本文需要解决C++中关于数组的2个问题:1. 数组作为函数参数,传值还是传址?2. 函数参数中的数组元素个数能否确定?先看下面的代码。
2014-07-04 16:33:01 463
原创 关于局部指针与栈的一点小结
昨天看到strcpy函数的典型实现时,发现该函数的返回值为局部指针变量,当时产生疑问:局部指针在函数结束时不是会被注销掉吗?为什么此处没有呢?下面给出strcpy函数代码:char* Mystrcpy(char* strDest, const char* strSrc){ assert((strDest!= NULL)&&(strSrc != NULL)); char* adress
2014-06-24 16:03:44 817
转载 白话经典算法系列之一 冒泡排序的三种实现
冒泡排序是非常容易理解和实现,,以从小到大排序举例:设数组长度为N。1.比较相邻的前后二个数据,如果前面数据大于后面的数据,就将二个数据交换。2.这样对数组的第0个数据到N-1个数据进行一次遍历后,最大的一个数据就“沉”到数组第N-1个位置。3.N=N-1,如果N不为0就重复前面二步,否则排序完成。 按照定义很容易写出代码:[cpp]
2014-06-10 14:48:26 451
原创 sizeof与strlen的区别
1.sizeof操作符的结果类型是size_t,它在头文件中typedef为unsigned int类型。该类型保证能容纳实现所建立的最大对象的字节大小。2.sizeof是算符,strlen是函数。3.sizeof可以用类型做参数,strlen只能用char*做参数,且必须是以'\0'结尾的。sizeof还可以用函数做参数,比如:short f();printf("%d\n", si
2014-03-06 11:35:21 543
原创 数据对齐
为什么要数据对齐?所谓数据对齐是指访问数据的地址要满足一定的条件,能被这个数据的长度所整除。 例如,1字节数据已经是对齐的,2字节的数据的地址要被2整除,4字节的数据地址要 被4整除。但为什么要数据对齐呢?简单地说,数据对齐是为了读取数据的效率。假如说每一次 读取数据时都是一个字节一个字节读取,那就不需要对齐了,这跟读一个字节没有什 么区别,就是多读几次。但是这样读取数据效率不高。
2014-03-04 12:40:31 975
原创 比特域
比特域是一种由结构体扩展而来的数据结构形式,也成为位域或者占符位。定义为:struct card{unsigned int pips:4; //占据4个位的长度unsigned int suit:2; //占据2个位长度unsigned char kq:2; //占据两个位长度}跟在变量声明后面的非负正常数是该数据所占据的比特宽度
2014-03-04 11:46:00 1579
转载 MATLAB 自带函数源代码的查找
有时候可能需要把MATLAB程序移植成C程序或者C++程序,这对与通信行业的人来说是很常见的事情,事先利用MATLAB天生具备的优越可视化环境仿真,利用MATLAB丰富的自带行数完成复杂算法的仿真,以比较不同算法之间的效率,对高效算法进行移植。 这时候往往会用到一些较为专业的函数,例如rgb2gray、fft等等,在MATLAB中我们仅是调用这些函数,不用关心MATLAB是怎么实现这些
2014-02-28 15:27:24 2123 1
转载 C++操作符的优先级
C++操作符的优先级操作符及其结合性功能用法L L L:: :: ::全局作用域 类作用域 名字空间作用域::name class::name namespace::nameL L L L L . -> []
2014-02-25 15:05:12 511
转载 assert的作用
assert()是C语言标准库中提供的一个通用预处理器宏,在代码中常利用assert()来判断一个必需的前提条件以便程序能够正确执行。例如,假定我们要读入一个文本文件并对其中的词进行排序,必需的前提条件是文件名已经提供给我们了,这样我们才能打开这个文件。为了使用assert(),必须包含与之相关联的C头文件 #include 。下面是一个简单的使用示例assert( filename !=
2014-02-24 09:30:52 737
转载 matlab中num2str的应用
在求导数,积分,方程的过程中,难免会遇到一些参数要随着情况有点变化,这时,你就需要能够动态的表示出你的表达式,Num2str函数是一个相当有用的函数,一般配合[]连接符使用,下面将我接触到的一些用法写出来。1 用于求导数的表达式,函数X^2 – y^p + y^t,pt为数值,可以跟随程序的不同被赋予不同的值。 Diff([‘x^2 – y^’ num2str(p) ‘+y^’ num
2014-02-20 16:57:07 2218
转载 stdexcept 头文件中定义的标准异常类
在 stdexcept 头文件中定义的标准异常类exceptionThe most general kind of problem.最常见的问题。runtime_errorProblem that can be detected only at run time.运行时错误:仅在运行时才能检测到问题range_error
2014-01-07 19:46:47 1484
原创 C++中文件路径的表述方法
在Windows目录下,文件路径表示为:D:\Program Files (x86)\Microsoft Visual Studio 10.0\Common7。而在网址中我们又发现网页的路径又表示为:http://blog.csdn.net/lxitong/article/details/1329549。那么到底“/”与“\”有什么区别呢,下面我们就来说一说。首先说明“/”表示正斜杠,或者左斜
2014-01-06 22:10:08 1556
原创 sprintf()函数的用法
今天老师提到一个将float型数据转换为字符串的问题,首先想到了sprintf函数,就试了一下,发现了一些问题。功能:把格式化的数据写入某个字符串缓冲区。头文件:stdio.h原型:int sprintf( char *buffer, const char *format, [ argument] … );参数列表:buffer:char型指针,指向
2013-11-07 21:50:02 2300
转载 explicit构造函数
本文转载于:http://www.cnblogs.com/cutepig/archive/2009/01/14/1375917.html按照默认规定,只有一个参数的构造函数也定义了一个隐式转换,将该构造函数对应数据类型的数据转换为该类对象,如下面所示:class String {String ( const char* p ); // 用C风格的字符串p作为初始化值//
2013-10-31 20:34:36 427
原创 函数名前后加const的区别
int const func1(); int func2() const;func1是合法的,表示是一个常量函数,返回的是一个常量的值,也就是返回的值是不可以改变的!表示该成员函数的隐藏this指针参数是int* const类型的。func2是非法的!const用在函数后只要是针对类的const对象。因此对函数的const限定词只能用于类的成员函数。使用const修饰的成员
2013-10-28 16:23:46 1074
原创 C++类对象内存结构
首先介绍一下C++中有继承关系的类对象内存的布局: 在C++中,如果类中有虚函数,那么它就会有一个虚函数表的指针__vfptr,在类对象最开始的内存数据中。之后是类中的成员变量的内存数据。 对于子类,最开始的内存数据记录着父类对象的拷贝(包括父类虚函数表指针和成员变量)。 之后是子类自己的成员变量数据。 对于子类的子类,也是同样的原理。但是无论继承了多少个子类,对象中始终只有一个虚函数
2013-10-23 21:31:32 454
原创 void*的用法
void*表示空类型指针,即任何类型的指针。其意思是知道该指针与一地址相关,但不知道在此地址上的对象的类型。之所以void不能表示任意类型的原因是C/C++是静态语言,只要定义变量就要为其分配内存。然而不同类型的变量其内存是不同的,若用void表示任意类型的话,无法为其分配内存的大小。而所有指针类型的变量,其内存空间都是相同的。因此可以定义任意类型的指针。void* a;定义上
2013-10-09 11:17:45 866
转载 数组指针与指针数组的区别
数组指针(也称行指针)定义 int (*p)[n];()优先级高,首先说明p是一个指针,指向一个整型的一维数组,这个一维数组的长度是n,也可以说是p的步长。也就是说执行p+1时,p要跨过n个整型数据的长度。如要将二维数组赋给一指针,应这样赋值:int a[3][4];int (*p)[4]; //该语句是定义一个数组指针,指向含4个元素的一维数组。 p=a;
2013-10-04 10:56:39 410
原创 C++ 取整函数ceil(),floor()
使用floor函数。floor(x)返回的是小于或等于x的最大整数。如: floor(10.5) == 10 floor(-10.5) == -11使用ceil函数。ceil(x)返回的是大于x的最小整数。如: ceil(10.5) == 11 ceil(-10.5) ==-10 floor()是向负无穷大舍入,floor(-10.
2013-09-06 11:00:16 590
原创 #pragma warning (disable: 4244)
#pragma warning (disable: 4244) 其作用为在编译时不显示警告提示。另外还有#pragma warning (disable: 4996):在使用std命名空间库函数的时候,往往会出现类似于下面的警告: warning C4996: strcpy was declared deprecated出现这样的警告,是因为VC认为CRT中的一组函数
2013-09-03 17:17:09 2494
原创 派生类的构造函数及其对象的初始化
#include using namespace std;class Base1{ int d1;public: Base1(int i) { d1 = i; cout<<"constructing Base1: "<<d1<<endl; }};class Base2{ int d2;public: Base2(int j) { d2 = j; c
2013-08-19 15:58:33 965
原创 字符指针与其他类型的指针的使用区别
字符指针与其他指针(如int型指针)在使用时有区别。字符指针有其使用的特殊性:如输出字符数组名(即字符指针)时就是输出字符指针所指向的那一个字符串。而输出int型数组名(即int型指针)时,输出的就为当前的指针值(一个地址)。 但输出字符数组名取地址或输出int型数组名取地址都可以输出当前的指针值(一个地址)。另外若将字符数组名即字符指针的类型进行转换后输出的将是当前的指针值(一个地址)。
2013-07-04 21:58:13 828
原创 字符指针与数组指针的区别
一,字符指针: 用字符指针指向一个字符串。可以不定义字符数组,而定义一个字符指针。用字符指针指向字符串中的字符。void main(){ char *string="I love China!"; printf("%s\n", string);}在这里,我们没有定义字符数组,而是在程序中定义了一个字符指针变量string,用字符串常量"I love China
2013-07-03 16:37:12 671
原创 DEL函数
system("del /s /q c:\\*.bak");其中,参数s是指包含所有子目录中的文件; 参数q是指不需要删除确认; 之后是文件路径及文件名(*.扩展名)。应用此函数需加载头文件:#include 注意:1,该函数中的文件扩展名不区分大小写,例如*.dat2与*.Dat2是一样的。如果文件夹中同时包含两种文件,则全
2013-06-30 11:19:52 1430
CHMEditor一款很好的CHM文件编辑器
2014-08-06
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人