![](https://img-blog.csdnimg.cn/20201014180756724.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
好好学习
lp_5ai
C 程序员
展开
-
堆与栈的区别
【转】栈 与 堆 的区别embed_design /峰 发表于2006-10-19, 12:28 【转】栈 与 堆 的区别 堆与栈有什么区别?一、预备知识—程序的内存分配 一个由c/C++编译的程序占用的内存分为以下几个部分 1、栈区(stack)— 由编译器自动分配释放 ,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈。 2、堆区(heap) — 一般由转载 2009-09-14 17:36:00 · 313 阅读 · 0 评论 -
结构体对齐
先让我们看四个重要的基本概念:1.数据类型自身的对齐值: 对于char型数据,其自身对齐值为1,对于short型为2,对于int,float,double类型,其自身对齐值为4,单位字节。2.结构体或者类的自身对齐值:其成员中自身对齐值最大的那个值。3.指定对齐值:#pragma pack (value)时的指定对齐值value。4.数据成员、结构体和类的有效对齐值:自身对齐值和指定对齐值中小原创 2009-11-08 19:57:00 · 335 阅读 · 0 评论 -
作用域
define是没有作用域的, 也没有什么public, private之分的, 就相当于一个全局的变量, 什么都可以使用typedef的作用域跟变量一样。const 更大原创 2009-11-01 21:23:00 · 229 阅读 · 0 评论 -
为什么构造函数不能声明为虚
为什么构造函数不能声明为虚:1、从使用的角度:虚函数的作用在于通过父类的指针或者引用来调用它的时候能够变成调用子类的那个成员函数。而构造函数是在创建对象时自动调用的,不可能通过父类的指针或者引用去调用,因此也就规定构造函数不能是虚函数。 2、从存储的角度虚函数对应一个vtable,这大家都知道,可是这个vtable其实是存储在对象的内存空间的。问题出来了,如果构造函数是虚的,原创 2009-11-08 11:38:00 · 703 阅读 · 0 评论 -
memcpy / strcpy / memset
////**************memcpy*************************//void *memcpy(void *dest, const void *src, size_t count) { char *tmp = (char *)dest; const char *s = (char *)src; while (count--) *tmp++ = *s++;原创 2009-11-07 15:43:00 · 346 阅读 · 0 评论 -
拷贝构造函数
#include class human{public:human(){ human_num++;};static int human_num;~human(){human_num--;print();}void print(){cout}protected:private:};int human::human_num = 0;human f1(human x){x.print();ret原创 2009-11-07 20:02:00 · 353 阅读 · 0 评论 -
构造函数与对象指针
#include "stdafx.h"#includeusing namespace std;class A{public: A() { cout }protected:private:};class B: public A{public: B() { cout }};int _tmain(int argc, _TCHAR* argv[]){ A*pa = new B; 这里只申明A类型原创 2009-10-24 08:11:00 · 408 阅读 · 0 评论 -
关于递归
还有一种利用递归逆转链表的方法。这种方法的基本思想是在反转当前节点之前先调用递归函数反转后续节点。源代码如下。不过这个方法有一个缺点,就是在反转后的最后一个结点会形成一个环,所以必须将函数的返回的节点的next域置为NULL。因为要改变head指针,所以我用了引用。算法的源代码如下: linka* reverse(linka* p,linka*& head) { if(p == NULL || p原创 2009-10-24 14:37:00 · 263 阅读 · 0 评论 -
小细节
void fun(){ static int a = 1; a++; cout} main 调这个函数两次,输出的值将是2,3静态变量的生命周期为整个文件,但是可见性为此函数内,因为它是一个局部变量。原创 2009-10-24 14:55:00 · 235 阅读 · 0 评论 -
操作链表
// Prime C.cpp : Defines the entry point for the console application.//#include "stdafx.h"#includeusing namespace std;typedef struct Link{ int ia; struct Link* next;}LinkNode;LinkNode* Inlitialize原创 2009-10-24 14:41:00 · 313 阅读 · 0 评论 -
new/delete 的使用要点--刘锐
运算符new使用起来要比函数malloc简单得多,例如:int *p1 = (int *)malloc(sizeof(int) * length);int *p2 = new int[length];这是因为new内置了sizeof、类型转换和类型安全检查功能。对于非内部数据类型的对象而言,new在创建动态对象的同时完成了初始化工作。如果对象有多个构造函数,那么new的语句也原创 2009-09-27 16:27:00 · 824 阅读 · 0 评论 -
析构函数为什么不能有参数???
???原创 2009-09-27 15:59:00 · 2749 阅读 · 0 评论 -
初学STL
一直对STL不熟悉,用的时候也想不到,今天系统归纳一下。区间(it1, it2)其范围为it1到it2,补包括it21.vectorstruct Review{ string title; int price;};bool FillReview(Review& rr){ cout getline(cin, rr.title); if("Quit" == rr.title) { ret原创 2009-09-27 15:56:00 · 308 阅读 · 0 评论 -
指针参数是如何传递内存的--刘锐
void GetMemory(char *p, int num){ p = (char *)malloc(sizeof(char) * num);}void Test(void){ char *str = NULL; GetMemory(str, 100); // str 仍然为 NULL strcp原创 2009-09-27 16:47:00 · 1256 阅读 · 0 评论 -
静态库,静态链接,动态链接 的区别
遗憾地说:除了ender说的(静态库在程序运行时就会装入内存,而动态库在调用的时候才装入!)是正确的外,其他观点都有偏颇之处甚至是错误的。我的感觉是,大家受MFC的影响太深了,而没有看到事情的本质。 首先纠正所谓“静态连接就是把需要的库函数放进你的exe之中”的说法。在真实世界中,有三个概念:Use static libary, static linked DLL,转载 2009-09-17 11:24:00 · 400 阅读 · 0 评论 -
指针++的含义
#include "stdafx.h"#include "iostream"using namespace std;int _tmain(int argc, _TCHAR* argv[]){ int a[] = {1, 2, 3, 4, 5, 6}; int (*p)[3] = reinterpret_cast(a + 1); cout int *p2 = a; p2++;// p2指向的是原创 2009-09-17 08:19:00 · 1115 阅读 · 0 评论 -
函数 指针 数组
一、指针数组与数组指针*p[2]:指针数组。 按照符号优先级来看,下标[ ]优先于指针*,所以可以看作是*(p[2]),那么应该首先是一个数组p[2]。而该数组的每个元素都是指针。 (*p)[2]:数组指针。按照符号优先级来看,括号( )优先于[ ],那么应该首先是一个指针。而该指针指向一个数组。二、指针函数与函数指针*p( ):指针函数。理解方法同上,该函数的值是一个指针。(转载 2009-09-16 08:21:00 · 312 阅读 · 0 评论 -
同步 I/O 与异步 I/O 之间的差别
同步 I/O 与异步 I/O 之间的差别数据传输可以是同步的,也可以是异步的。决定因素取决于调度传输的入口点是立即返回还是等到 I/O 操作完成之后。 read(9E) 和 write(9E) 入口点都是同步入口点。传输在 I/O 操作完成之前不得返回。待例程返回值时,进程就会知道传输是否成功。 aread(9E) 和 awrite(9E) 入口点都是异步入口点。异步入口点调度 I/O 并立即原创 2009-11-09 20:50:00 · 1194 阅读 · 0 评论