c/c++
文章平均质量分 79
liujiejieliu1234
这个作者很懒,什么都没留下…
展开
-
互换两个变量,不使用中间变量
第一种方法:a=a+b;b=a-b;a=a-b; 代码如下:[cpp] view plaincopy#include "stdio.h" int main(void) { int a,b; printf("请输入两个变量a和b:/n"); scanf("%d转载 2015-04-21 18:37:27 · 472 阅读 · 0 评论 -
STL之list容器详解
List 容器list是C++标准模版库(STL,Standard Template Library)中的部分内容。实际上,list容器就是一个双向链表,可以高效地进行插入删除元素。使用list容器之前必须加上头文件:#include;list属于std命名域的内容,因此需要通过命名限定:using std::list;也可以直接使用全局的命名空间方式:using name转载 2015-06-16 21:38:13 · 430 阅读 · 0 评论 -
STL之deque容器详解
Deque 容器deque容器是C++标准模版库(STL,Standard Template Library)中的部分内容。deque容器类与vector类似,支持随机访问和快速插入删除,它在容器中某一位置上的操作所花费的是线性时间。与vector不同的是,deque还支持从开始端插入数据:push_front()。使用deque容器之前必须加上头文件:#include;转载 2015-06-16 21:45:02 · 385 阅读 · 0 评论 -
函数参数的传递问题(指针的指针)
函数参数的传递问题(指针的指针) 程序1:void myMalloc(char *s) //我想在函数中分配内存,再返回{ s=(char *) malloc(100);}void main(){ char *p=NULL; myMalloc(p); //这里的p实际还是NULL,p的值没有改变,为什么? if(p) free(p);转载 2015-05-27 10:02:48 · 442 阅读 · 0 评论 -
STL之vector容器详解
vector 容器vector是C++标准模版库(STL,Standard Template Library)中的部分内容。之所以认为是一个容器,是因为它能够像容器一样存放各种类型的对象,简单的说:vector是一个能够存放任意类型的动态数组,能够增加和压缩数据。使用vector容器之前必须加上头文件:#include;vector属于std命名域的内容,因此需要通过命名限转载 2015-06-16 21:36:33 · 475 阅读 · 0 评论 -
sizeof 数据对齐问题
总结:(1)当最高位为char型数据时,组合成char型数据,此时sizeof为1的整数倍。(2)当最高位为short型数据时,组合成short型数据,此时sizeof为2的整数倍。(3)当出现数据位最高为整型数据,也即32位数据,可以把其中的不够32位的同一种数据组合起来成32位,不同数据不能组合在一起,sizeof为4的整数倍(4)当出现数据位最高为double数据,也即64位数据,可以把其中的不够32位的同一种数据组合起来成32位,同时可以把不同种数据组合成64位,ziseof为8的整数倍(5原创 2015-05-28 10:43:44 · 478 阅读 · 0 评论 -
虚表/虚指针
虚函数在c++中的实现机制就是用虚表和虚指针,但是具体是怎样的呢?从more effecive c++其中一篇文章里面可以知道:是每个类用了一个虚表,每个类的对象用了一个虚指针。具体的用法如下:class A{public:virtual void f();virtual void g();private:int a};class B : public原创 2015-05-25 09:36:22 · 361 阅读 · 0 评论 -
函数指针与函数指针数组的定义与使用
函数指针与函数指针数组的定义与使用函数指针:指向函数的指针定义方法为double add(double a,double b);double sub(double a,double b);double mul(double a,double b);double div1(double a,double b);double (*Func)(double,d原创 2015-05-27 09:43:22 · 387 阅读 · 0 评论 -
字符数组与字符指针
1.字符指针可以指向一个字符串。我们可以用字符串常量对字符指针进行初始化。例如,有说明语句:char *str = "This is a string.";//字符串在常量区是对字符指针进行初始化。此时,字符指针指向的是一个字符串常量的首地址,即指向字符串的首地址。这里要注意字符指针与字符数组之间的区别。例如,有说明语句:char string[ ]="This is a st原创 2015-05-26 14:43:43 · 438 阅读 · 0 评论 -
深入探讨C++中的引用
引用是C++引入的新语言特性,是C++常用的一个重要内容之一,正确、灵活地使用引用,可以使程序简洁、高效。我在工作中发现,许多人使用它仅仅是想当 然,在某些微妙的场合,很容易出错,究其原由,大多因为没有搞清本源。故在本篇中我将对引用进行详细讨论,希望对大家更好地理解和使用引用起到抛砖引玉的 作用。 一、引用简介 引用就是某一变量(目标)的一个别名,对引用的操作与对变量直接操作完转载 2015-05-21 17:11:15 · 273 阅读 · 0 评论 -
c语言中const关键字详解
1、什么是const? 常类型是指使用类型修饰符const说明的类型,常类型的变量或对象的值是不能被更新的。(当然,我们可以偷梁换柱进行更新:) 2、为什么引入const? const 推出的初始目的,正是为了取代预编译指令,消除它的缺点,同时继承它的优点。 3、cons有什么主要的作用? (1)可以定义const常量,具有不可变性。 例如: const int M原创 2015-05-26 19:27:21 · 425 阅读 · 0 评论 -
C++中的类模板Template
多个类有着共同操作,但是数据类型不同。如下的3个类,getMax的功能是相同的,即求两个数中的最大值,仅仅是数据类型不同。 Cpp代码 class Compare_int { private: int x,y; public: Compare(int a,int b)原创 2015-05-25 14:08:33 · 414 阅读 · 0 评论 -
malloc/free与new/delete的区别
相同点:都可用于申请动态内存和释放内存不同点:(1)操作对象有所不同。malloc与free是C++/C 语言的标准库函数,new/delete 是C++的运算符。对于非内部数据类的对象而言,光用maloc/free 无法满足动态对象的要求。对象在创建的同时要自动执行构造函数, 对象消亡之前要自动执行析构函数。由于malloc/free 是库函数而不是运算符,不在编译器控制权限之内转载 2015-04-21 18:19:05 · 342 阅读 · 0 评论 -
C/C++ STACK &HEAP 区别
堆:顺序随意 栈:先进后出 堆和栈的区别 一、预备知识—程序的内存分配 一个由c/C++编译的程序占用的内存分为以下几个部分 1、栈区(stack)— 由编译器自动分配释放 ,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈 2、堆区(heap) — 一般由程序员分配释放, 若程序员不释放,程序结束时可能由OS回收 。注意它与数据结构中的堆是两回事,分配方式转载 2015-04-20 18:36:06 · 414 阅读 · 0 评论 -
strlen && sizeof()
一、sizeof sizeof(...)是运算符,在头文件中typedef为unsigned int,其值在编译时即计算好了,参数可以是数组、指针、类型、对象、函数等。 它的功能是:获得保证能容纳实现所建立的最大对象的字节大小。 由于在编译时计算,因此sizeof不能用来返回动态分配的内存空间的大小。实际上,用sizeof来返回类型以及静态分配的对象、结构或数组所转载 2015-04-20 18:31:05 · 294 阅读 · 0 评论 -
c知识点总结
1、局部变量能否和全局变量重名? 答:能,局部会屏蔽全局。要用全局变量,需要使用"::" ;局部变量可以与全局变量同名,在函数内引用这个变量时,会用到同名的局部变量,而不会用到全局变量。对于有些编译器而言,在同一个函数内可以定义多个同名的局部变量,比如在两个循环体内都定义一个同名的局部变量,而那个局部变量的作用域就在那个循环体内。 2、如何引用一个已经定义过的全局变转载 2015-04-19 22:05:52 · 849 阅读 · 0 评论 -
栈,堆分区
在C\C++中,通常可以把内存理解为4个分区:栈、堆、全局/静态存储区和常量存储区。下面我们分别简单地介绍一下各自的特点。一. 区域划分堆: 是大家共有的空间,分全局堆和局部堆。全局堆就是所有没有分配的空间,局部堆就是用户分配的空间。堆在操作系统对进程初始化的时候分配,运行过程中也可以向系统要额外的堆,但是记得用完了要还给操作系统,要不然就是内存泄漏。栈:是个线程独有的,保存其原创 2015-05-11 22:16:24 · 539 阅读 · 0 评论 -
C++ STL中迭代器介绍
迭代器迭代器提供对一个容器中的对象的访问方法,并且定义了容器中对象的范围。迭代器就如同一个指针。事实上,C++的指针也是一种迭代器。但是,迭代器不仅仅是指针,因此你不能认为他们一定具有地址值。例如,一个数组索引,也可以认为是一种迭代器。迭代器有各种不同的创建方法。程序可能把迭代器作为一个变量创建。一个STL容器类可能为了使用一个特定类型的数据而创建一个迭代器。作为指针,必须能够使用*操作符原创 2015-05-11 21:20:25 · 347 阅读 · 0 评论 -
关键字volatile有什么含义?并给出三个不同的例子
一个定义为volatile的变量是说这变量可能会被意想不到地改变,这样,编译器就不会去假设这个变量的值了.精确地说就是,优化器在用到这个变量时必须每次都小心地重新读取这个变量的值,而不是使用保存在寄存器里的备份.下面是volatile变量的几个例子: 1).并行设备的硬件寄存器(如:状态寄存器) 2).一个中断服务子程序中会访问到的非自动变量(Non-automatic variabl原创 2015-05-27 09:28:47 · 1061 阅读 · 0 评论 -
C++预编译
C++提供的编译预处理功能主要有以下三种: (一) 宏定义 (二) 文件包含 (三) 条件编译预处理过程扫描源代码,对其进行初步的转换,产生新的源代码提供给编译器。可见预处理过程先于编译器对源代码进行处理。在C语言中,并没有任何内在的机制来完成如下一些功能:在编译时包含其他源文件、定义宏、根据条件决定编译时是否包含某些代码。要完成这些工作,就需要使用预处理转载 2015-05-26 09:43:13 · 394 阅读 · 0 评论 -
c++空类实例大小不是0原因
初学者在学习面向对象的程序设计语言时,或多或少的都些疑问,我们写的代码与最终生编译成的代码却 大相径庭,我们并不知道编译器在后台做了什么工作.这些都是由于我们仅停留在语言层的原因,所谓语言层就是教会我们一些基本的语法法则,但不会告诉我们为什么这么做?今天和大家谈的一点感悟就是我在学习编程过程中的一点经验,是编译器这方面的一个具体功能.首先:我们要知道什么是类的实例化,所谓类的实例化就是在内转载 2015-06-15 11:10:29 · 334 阅读 · 0 评论