![](https://img-blog.csdnimg.cn/20201014180756724.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
C/C++
文章平均质量分 62
sunnyyang009
这个作者很懒,什么都没留下…
展开
-
虚函数的用法以及作用
虚函数可以让成员函数操作一般化,用基类的指针指向不同的派生类的对象时,基类指针调用其虚成员函数,则会调用其真正指向对象的成员函数,而不是基类中定义的成员函数(只要派生类改写了该成员函数)。若不是虚函数,则不管基类指针指向的哪个派生类对象,调用时都会调用基类中定义的那个函数。 看看下面的例子 1.不用虚函数时 #includeclass Point{p转载 2009-09-17 14:14:00 · 3405 阅读 · 0 评论 -
#pragma DATA_ALIGN作用
#pragma,是一个编译控制指令,可以在编译时动态地调整编译选项,这种指令在不同的编译系统中是不同的. #pragma DATA_ALIGN( symbol,constant) 指令的作用是:排列排列symbol到constant指点的列边界上. #pragma DATA_ALIGN( rxdata_stream, 128)就是让rxdata_stream地址的末尾7位是转载 2009-10-09 10:48:00 · 13840 阅读 · 0 评论 -
c语言运算符号
1级优先级 左结合() 圆括号[] 下标运算符-> 指向结构体成员运算符. 结构体成员运算符2级优先级 右结合! 逻辑非运算符~ 按位取反运算符++ 自增运算符-- 自减运算符- 负号运算符(类型) 类型转换运算符* 指针运算符& 地址与运算符sizeof 长度运算符3级优先级 左结合* 乘法运算符/ 除法运算符% 取余运算符4级优先级 左结合+ 加法运算符- 减法运算符5级优先级 左结合>> 右转载 2009-11-19 16:22:00 · 901 阅读 · 0 评论 -
Sizeof与Strlen
strlen()函数求值以及字符串分配内存注意事项char str[] = "abcdefg";strlen(str)的值是是7.(不要与sizeof函数求值相混淆,sizeof将串尾中的/0也计算在内)请注意。char str1[] = "abcdefg";char str2[] = "hijk";分配内存后将两串相加后注入给新分配的内存:char* str3 = (char*)mema转载 2010-01-07 13:44:00 · 915 阅读 · 1 评论 -
int main(int argc, char *argv[ ], char *envp[ ])
1. main() 参数 在Turbo C2.0启动过程中, 传递main()函数三个参数: argc, argv和env。 * argc: 整数, 为传给main()的命令行参数个数。 * arg转载 2010-01-07 13:50:00 · 1103 阅读 · 0 评论 -
每日微软面试题——day 1
.编写反转字符串的程序,要求优化速度、优化空间。分析:构建两个迭代器p 和 q ,在一次遍历中,p的位置从字串开头向中间前进,q从字串末尾向中间后退,反转字串只要每次遍历都交换p和q所指向的内容即可,直到p和q在中间相遇,这时循环次数刚好等于 字串的长度/2。转载 2011-08-08 13:04:04 · 514 阅读 · 0 评论 -
memset 函数
将s所指向的某一块内存中的每个字节的内容全部设置为ch指定的ASCII值, 块的大小由第三个参数指定,这个函数通常为新申请的内存做初始化工作, 其返回值为指向S的指针。需要的头文件 or 编辑本段函数原型 void *memset(void *s, int转载 2011-08-23 11:05:56 · 772 阅读 · 0 评论 -
switch-case
switch(表达式){ case 常量表达式1:语句1; break; case 常量表达式2:语句2; break; .... default:语句; break; } 1.default就是如果没有符合的case就执行它,default并不是必须的. 2.case后的语句可以不用大括号. case 后面必须是常量表达式cons转载 2012-12-20 17:33:25 · 851 阅读 · 0 评论 -
C/C++中switch-case用法归纳
if语句处理两个分支,处理多个分支时需使用if-else-if结构,但如果分支较多,则嵌套的if语句层就越多,程序不但庞大而且理解也比较困难.深层嵌套的else-if语句往往在语法上是正确的,但逻辑上却没有正确地反映程序员的意图。例如,错误的else-if匹配很容易被忽略。添加新的条件和逻辑关系,或者对语句做其他的修改,都很难保证正确性。因此,C/C++语言又提供了一个专门用于处理多分支结构的条件转载 2012-12-20 17:27:40 · 2801 阅读 · 0 评论 -
#ifdef __cplusplus 学习
时常在cpp的代码之中看到这样的代码: #ifdef __cplusplus extern "C" { #endif //一段代码 #ifdef __cplusplus } #endif 这样的代码到底是什么意思呢?首先,__cplusplus是cpp中的自定义宏,那么定义了这个宏的话表示这是一段cpp的代码,也就是说,上面的代码的含义是:如果转载 2009-10-09 11:42:00 · 865 阅读 · 1 评论 -
#pragma 预处理指令详解
在所有的预处理指令中,#pragma 指令可能是最复杂的了,它的作用是设定编译器的状态或者是指示编译器完成一些特定的动作。#pragma指令对每个编译器给出了一个方法,在保持与C和C++语言完全兼容的情况下,给出主机或操作系统专有的特征。依据定义,编译指示是机器或操作系统专有的,且对于每个编译器都是不同的。 其格式一般为: #pragma para 其中para为参数,下面来转载 2009-10-09 10:54:00 · 1040 阅读 · 1 评论 -
指针函数和函数指针
1,这两个概念都是简称,指针函数是指带指针的函数,即本质是一个函数。我们知道函数都又返回类型(如果不返回值,则为无值型),只不过指针函数返回类型是某一类型的指针。其定义格式如下所示: 返回类型标识符 *返回名称(形式参数表) { 函数体 } 返回类型可以是任何基本类型和复合类型。返回指针的函数的用途十分广泛。事实上,每一个函数,即使它不带有返回某种类型的指针,它本身都有一个入口地址,该地址转载 2009-09-25 09:58:00 · 470 阅读 · 0 评论 -
堆和栈的区别
堆和栈的区别一、预备知识—程序的内存分配一个由c/C++编译的程序占用的内存分为以下几个部分1、栈区(stack)— 由编译器自动分配释放 ,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈。2、堆区(heap) — 一般由程序员分配释放, 若程序员不释放,程序结束时可能由OS回收 。注意它与数据结构中的堆是两回事,分配方式倒是类似于链表,呵呵。3、全局区(静态区)(static)转载 2009-09-17 14:31:00 · 469 阅读 · 0 评论 -
C++中虚函数有哪些作用及用法 (2)
动态联编是指在程序运行时进行的联编,也称晚期联编。 动态联编要求在运行时解决程序中的函数调用与执行该函数代码间的关系。使用虚函数可实现动态联编,不同联编可以选择不同的实现,这便是多态性。继承是动态联编的基础,虚函数是动态联编的关键。虚函数是一种非静态的成员函数,定义格式如下:virtual (){//}其中,virtual 是关键字。如果某个类中的一个成员函数被说明为虚函数,该成员函数可能在派生转载 2009-09-17 14:25:00 · 766 阅读 · 0 评论 -
Replace 函数
Replace 函数返回字符串,其中指定数目的某子字符串被替换为另一个子字符串。Replace(expression, find, replacewith[, compare[, count[, start]]])参数expression ——必选项。字符串表达式 包含要替代的子字符串。Find——必选项。被搜索的子字符串。Replacewith——必选项。用于替换的子字符转载 2009-09-18 10:29:00 · 630 阅读 · 0 评论 -
覆盖、重载、多态
覆盖:在基类中定义了一个非虚拟函数,然后在派生类中又定义了一个同名同参数同返回类型的函数,这就是覆盖了。在派生类对象上直接调用这个函数名,只会调用派生类中的那个。重载:在基类中定义了一个非虚拟函数,然后在派生类中定义一个同名,但是具有不同的参数表的函数,这就是重载。在派生类对象上调用这几个函数时,用不同的参数会调用到不同的函数,有可能会直接调用到基类中的那个。多态:在基类中定义转载 2009-09-22 13:54:00 · 1259 阅读 · 0 评论 -
将基类析构函数设为虚函数的目的
将CObject的析构函数设为virtual型,则所有的CObject类的派生类的析构函数都将自动变为virtual 型,这保证了在任何情况下,不会出现由于析构函数未被调用而导致的内存泄露。这也是MFC将CObject::~MFC将CObject()设为virtual型的真正原因。原创 2009-09-21 16:49:00 · 1247 阅读 · 0 评论 -
C/C++ assert() 函数用法
assert 函数名: assert 功 能: 测试一个条件并可能使程序终止 用 法: void assert(int test); 程序例: #include #include #include struct ITEM { int key; int value; }; /* add item to list, make sure list is not null */ vo转载 2009-09-24 18:23:00 · 667 阅读 · 0 评论 -
指针详解
指针是一个特殊的变量,它里面存储的数值被解释成为内存里的一个地址。要搞清一个指针需要搞清指针的四方面的内容:指针的类型,指针所指向的类型,指针的值或者叫指针所指向的内存区,还有指针本身所占据的内存区。 例一: (1)int *ptr; (2)char *ptr; (3)int **ptr; (4)int (*ptr)[3]; (5)int *(*ptr)[4];转载 2009-09-25 09:53:00 · 545 阅读 · 0 评论 -
volatile的作用
一个定义为volatile的变量是说这变量可能会被意想不到地改变,这样,编译器就不会去假设这个变量的值了。精确地说就是,优化器在用到这个变量时必须每次都小心地重新读取这个变量的值,而不是使用保存在寄存器里的备份。下面是volatile变量的几个例子: 1). 并行设备的硬件寄存器(如:状态寄存器) 2). 一个中断服务子程序中会访问到的非自动变量(Non-automatic v转载 2009-09-29 13:03:00 · 592 阅读 · 0 评论 -
C/C++中extern关键字详解
1 基本解释:extern可以置于变量或者函数前,以标示变量或者函数的定义在别的文件中,提示编译器遇到此变量和函数时在其他模块中寻找其定义。此外extern也可用来进行链接指定。 也就是说extern有两个作用,第一个,当它与"C"一起连用时,如: extern "C" void fun(int a, int b);则告诉编译器在编译fun这个函数名时按着C的规则去翻译相应的函数转载 2014-07-04 10:50:22 · 763 阅读 · 0 评论