![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
C/C++
简直酷炫
这个作者很懒,什么都没留下…
展开
-
C程序内存结构
一个32位的运行在保护模式下应用程序,无论是Linux 还是Windows 都给它分配一个4GB的平坦的内存空间一个运行着的c程序所占用的内存空间分为:代码区 初始化数据区 未初始化数据区 堆区 和 栈区 在地址上从高位到地位为(高位)栈区堆区未初始化数据区(即BBS)数据区代码区(低位) BSS段:BSS段(bss segment)通常是指转载 2013-06-02 08:57:09 · 864 阅读 · 0 评论 -
栈帧&溢出
转自:http://www.cnblogs.com/shuaiwhu/archive/2008/10/17/2065110.html栈帧也叫过程活动记录,是编译器用来实现过程/函数调用的一种数据结构 从逻辑上讲,栈帧就是一个函数执行的环境:函数参数、函数的局部变量、函数执行完后返回到哪里 … 。 实现上有硬件方式和软件方式(有些体系不支持硬件栈)缓冲区溢出攻击主要是利用栈帧的构成机转载 2013-06-06 10:36:42 · 673 阅读 · 0 评论 -
堆和栈的区别 (非常详细)
堆和栈的区别 (转贴)非本人作也!因非常经典,所以收归旗下,与众人阅之!原作者不祥!堆和栈的区别一、预备知识—程序的内存分配一个由c/C++编译的程序占用的内存分为以下几个部分1、栈区(stack)— 由编译器自动分配释放 ,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈。2、堆区(heap) — 一般由程序员分配释放, 若程序员不释放,程序结束时可能转载 2013-06-06 14:54:22 · 617 阅读 · 0 评论 -
阶乘的准确值
题目:输入不超过1000的正整数n,输出n!=1x2x3x...xn的精确结果。 样例输入:30 样例输出:265252859812191058636308480000000注:本题为《算法竞赛入门经典》5.2.2题,书上注释较少,我加上了较详细的注释。1000!约等于4*10^2567,所以可以用一个3000个元素的数组f保存。为了方便原创 2013-06-08 20:13:34 · 1019 阅读 · 0 评论 -
一个正整数表示为n(n>=2)个连续正整数之和!
今天下午无意中看到这个题目: 题目描述:一个正整数有可能可以被表示为n(n>=2)个连续正整数之和,如: 15=1+2+3+4+5 15=4+5+6 15=7+8 请编写程序,根据输入的任何一个正整数,找出符合这种要求的所有连续正整数序列。 输入数据:一个正整数,以命令行参数的形式提供给程序。 输出数据:在标准输出上打印出符合题目描述的全部正整数序列,每原创 2012-05-20 21:55:59 · 5274 阅读 · 1 评论 -
C++中引用传递与指针传递区别
C++中引用传递与指针传递区别在C++中,指针和引用经常用于函数的参数传递,然而,指针传递参数和引用传递参数是有本质上的不同的:指针传递参数本质上是值传递的方式,它所传递的是一个地址值。值传递过程中,被调函数的形式参数作为被调函数的局部变量处理,即在栈中开辟了内存空间以存放由主调函数放进来的实参的值,从而成为了实参的一个副本。值传递的特点是被调函数对形式参数的任何操作都是作为局部变量进行,转载 2013-07-04 10:53:38 · 612 阅读 · 0 评论 -
C++中的空类,默认产生哪些类成员函数
一个空的class在C++编译器处理过后就不再为空,编译器会自动地为我们声明一些member function,如果你写class Empty{};就相当于: class Empty{ public: Empty(); // 缺省构造函数 Empty( const Empty& ); // 拷贝构造函数 ~Empty(); // 析构函数 Empt转载 2013-08-19 14:51:34 · 660 阅读 · 0 评论 -
c++ string操作
1、string类的构造函数eg:string(const char *s); // 用c字符串初始化string(int n, char c); // 用n个字符c初始化此外,string类还支持默认构造函数和复制构造函数,如string s1; string s2 = “hello”; 都是正确写法。当构造的string太长而无法表达时会抛出length_error异常,而转载 2013-08-23 15:15:24 · 525 阅读 · 0 评论 -
C++ stringstream的用法
使用stringstream对象简化类型转换C++标准库中的提供了比ANSI C的更高级的一些功能,即单纯性、类型安全和可扩展性。在本文中,我将展示怎样使用这些库来实现安全和自动的类型转换。为什么要学习如果你已习惯了风格的转换,也许你首先会问:为什么要花额外的精力来学习基于的类型转换呢?也许对下面一个简单的例子的回顾能够说服你。假设你想用sprintf()函数将一个变量从int类型转换转载 2013-08-23 16:48:06 · 775 阅读 · 0 评论 -
float与double的范围和精度
1. 范围 float和double的范围是由指数的位数来决定的。 float的指数位有8位,而double的指数位有11位,分布如下: float: 1bit(符号位) 8bits(指数位) 23bits(尾数位) double: 1bit(符号位) 11bits(指数位) 52bits(尾数位) 于是,float的指数范围为-127~+128,而dou转载 2013-08-23 19:21:49 · 542 阅读 · 0 评论 -
C++内存分配方式详解——堆、栈、自由存储区、全局/静态存储区和常量存储区
栈,就是那些由编译器在需要的时候分配,在不需要的时候自动清除的变量的存储区。里面的变量通常是局部变量、函数参数等。在一个进程中,位于用户虚拟地址空间顶部的是用户栈,编译器用它来实现函数的调用。和堆一样,用户栈在程序执行期间可以动态地扩展和收缩。 堆,就是那些由 new 分配的内存块,他们的释放编译器不去管,由我们的应用程序去控制,一般一个 new 就要对应一个 delete。如果程序员没有释转载 2013-08-26 11:14:59 · 665 阅读 · 0 评论 -
求解1-n之间的素数
1、最常用的方法void PrintPrime(int n){ int i,j; for (i=2;i<=n;i++) { bool Ok=true; for (j=2;j<=sqrt(i);j++) { if (i%j==0) { Ok=false; break; } } if(Ok) cou转载 2013-08-14 19:32:09 · 523 阅读 · 0 评论 -
C++经典面试题
1、int a=5,则 ++(a++)的值是()A、5 B、 6 C、7 D、逻辑错误a++返回的是一个临时变量,这里是右值,不能再前面++了2、下面的代码输出什么?(取地址运算符比+运算符的优先级要高)[cpp] view plaincopyprint?int main(void) { int转载 2013-08-28 20:20:15 · 681 阅读 · 0 评论 -
非C++内建型别A和B, 在哪几种情况下B能隐式转化为A?
// Case 1 : B公有继承自A class B : public A { ... } // Case 1 : B公有继承自Aclass B : public A{ ...}[cpp] view plaincopyprint?// Case 2 : B实现了隐式转化为A的转化 class B {转载 2013-08-28 17:22:56 · 666 阅读 · 0 评论 -
美图2013.6.5校园宣讲会实习生笔试题(C++)
美图就是那个做个美图秀秀的,当然它还有其他产品,只不过大家都知道的就是美图秀秀了。先是漂亮hr mm宣讲,blalba。。。介绍美图的产品,顺便给他们的手机做了一下广告,美女程序员,美女设计师,美女hr,美女。。。总之,一句话:我们这里有的是美女吆,快来吧,亲!赤果果的色诱 不过,待遇实在是。。。。1500元,管住不管吃。。。。就两个方向的笔试:android和c++,我笔的是c++,因为原创 2013-06-05 22:15:19 · 5150 阅读 · 1 评论 -
字符指针与字符数组内存分配的区别
char *a = "hello world";首先,操作系统在编译器规划内存方案中的的文字常量区分配一段内存,存储"hello world"字符串,然后在栈区分配一个内存,存储"hello world"字符串所在内存的首地址。 char b[] = "hello world";操作系统在编译器规划的内存方案中的栈区分配一段连续内存空间(12个字节),存储"hello world"字符串。转载 2013-06-11 15:56:25 · 1086 阅读 · 0 评论 -
负数的右移
以下转自http://hi.baidu.com/logeable/item/7b83c6cebcf1d15aad00ef15带符号的负数右移 1.求出该负数的原码 -7原码是100001112.求出补码 -7补码是11111001(除符号位各位取反,末转载 2013-05-20 16:00:25 · 2808 阅读 · 0 评论 -
几种常用的函数调用约定!
以下转自百度百科http://baike.baidu.com/view/1280676.htm __cdecl 是C Declaration的缩写(declaration,声明),表示C语言默认的函数调用方法:所有参数从右到左依次入栈,这些参数由调用者清除,称为手动清栈。被调用函数不会要求调用者传递多少参数,调用者传递过多或者过少的参数,甚至完全不同的参数都不会产生编译阶段的转载 2013-05-20 11:00:11 · 1071 阅读 · 0 评论 -
数组与链表的区别
数组与链表的区别1. 基于空间的考虑 数组的存储空间是静态,连续分布的,估计过大造成空间浪费,估计太小又将使空间溢出机会增多。 而链表的存储空间是动态分布的,只要内存空间尚有空闲,就不会产生溢出; 链表中每个节点除了数据域外,还有指针域,存储密度小于1(数组为1), 存储空间利用率就越高。 2. 基于时间的考虑 数组中任意节点都可以在O(1)转载 2013-05-20 15:04:16 · 1214 阅读 · 0 评论 -
腾讯2010校园招聘笔试题(软件测试类)的附加题
题目:在10000以内求出满足以下要求的数。 给出一个数,其个十百千位上的数两两相乘再相加(如1400的和几位4),其和能够被原数整除。将其原数翻转为新数(1400的新数是41),求出最大新数,并求其原数。注:这个题目是很早之前写的,可能有点乱 #include #include #include void main(){int原创 2013-05-20 17:02:19 · 933 阅读 · 0 评论 -
类的静态成员
以下转自http://blog.csdn.net/morewindows/article/details/6721430在C++中,静态成员是属于整个类的而不是某个对象,静态成员变量只存储一份供所有对象共用。所以在所有对象中都可以共享它。使用静态成员变量实现多个对象之间的数据共享不会破坏隐藏的原则,保证了安全性还可以节省内存。静态成员的定义或声明要加个关键static。静态成员可以通过转载 2013-05-21 10:12:29 · 566 阅读 · 0 评论 -
delete []是如何得知数组个数的
转自http://blog.csdn.net/lcfeng1982/article/details/8106719 通常在delete[]一个数组时,编译器要按顺序作如下两件事情: 1. 对每个数组元素调用析构函数 2. 释放对象数组所占内存 注意这是彼此独立的两步. 在第2步.编译器只需简单地把数组首地址告诉操作系统,操作系统内部有内存申请情况的记录(每个转载 2013-05-21 10:42:37 · 445 阅读 · 0 评论 -
类的sizeof
转自http://blog.csdn.net/valerie_7/article/details/6757664 1、空类的sizeof是1。空类是指没有成员的类,类中的函数不占空间,除非是虚函数。如: class A { public: A(){}转载 2013-05-21 20:31:47 · 446 阅读 · 0 评论 -
c++虚函数表解析(二)
转自百度文库http://wenku.baidu.com/view/5f61c8c70c22590102029d63.html ,个人感觉这个讲的更详细、更好一些注:图片没有转载过来,大家看的话还是直接看百度文库中的那个吧!转载 2013-05-21 20:47:56 · 432 阅读 · 0 评论 -
malloc/free与new/delete的区别
转自http://blog.csdn.net/xiaoxibo/article/details/6792151相同点:都可用于申请动态内存和释放内存不同点:(1)操作对象有所不同。malloc与free是C++/C 语言的标准库函数,new/delete 是C++的运算符。对于非内部数据类的对象而言,光用maloc/free 无法满足动态对象的要求。对象在创建的同时要自动执行构转载 2013-05-21 18:43:47 · 425 阅读 · 0 评论 -
C++ 虚函数表解析(一)
转自http://blog.csdn.net/tianmo2010/article/details/8497329C++ 虚函数表解析前言 C++中的虚函数的作用主要是实现了多态的机制。关于多态,简而言之就是用父类型别的指针指向其子类的实例,然后通过父类的指针调用实际子类的成员函数。这种技术可以让父类的指针有“多种形态”,这是一种泛型技术。所谓泛型技术,说白了就是试图使用不变的代码转载 2013-05-21 20:41:28 · 470 阅读 · 0 评论 -
九月十月百度人搜,阿里巴巴,腾讯华为小米搜狗笔试面试八十题
转自http://blog.csdn.net/v_july_v/article/details/7974418 九月十月百度人搜,阿里巴巴,腾讯华为小米搜狗笔试面试八十题引言 自发表上一篇文章至今(事实上,上篇文章更新了近3个月之久),blog已经停了3个多月,而在那之前,自开博以来的21个月每月都不曾断过。正如上一篇文章支持向量机通俗导论转载 2013-05-22 11:25:12 · 6340 阅读 · 0 评论 -
atoi()函数
转自http://blog.csdn.net/youbang321/article/details/7888138 atoi()函数的功能:将字符串转换成整型数;atoi()会扫描参数nptr字符串,跳过前面的空格字符,直到遇上数字或正负号才开始做转换,而再遇到非数字或字符串时('\0')才结束转化,并将结果返回(返回转换后的整型数)。 atoi()函数实现的代码:转载 2013-05-23 21:58:23 · 1111 阅读 · 0 评论 -
STL中的list容器
以下转自http://www.cnblogs.com/BeyondAnyTime/archive/2012/08/10/2631191.htmlSTL中的list容器的一点总结1.关于list容器list是一种序列式容器。list容器完成的功能实际上和数据结构中的双向链表是极其相似的,list中的数据元素是通过链表指针串连成逻辑意义上的线性表,也就是list也具有链表的主要优点,即:在转载 2013-06-09 14:56:00 · 834 阅读 · 0 评论 -
#define、const、typedef的差别
#define 并不是定义变量, 只是用来做文本替换 例如: #define PI 3.1415926 float angel; angel=30*PI/180; 那么,当程序进行编译的时候,编译器会首先将 “#define PI 3.1415926”以后的,所有代码中的“Pi”全部换成 “3.1415926”然后再进行编译。 我查到一个讲const与#define的差转载 2013-06-02 16:52:30 · 536 阅读 · 0 评论 -
malloc/free与new/delete的区别
相同点:都可用于申请动态内存和释放内存不同点:(1)操作对象有所不同。malloc与free是C++/C 语言的标准库函数,new/delete 是C++的运算符。对于非内部数据类的对象而言,光用maloc/free 无法满足动态对象的要求。对象在创建的同时要自动执行构造函数, 对象消亡之前要自动执行析构函数。由于malloc/free 是库函数而不是运算符,不在编译器控制权限之内,不转载 2013-08-16 17:25:32 · 563 阅读 · 0 评论