
C/C++
LouisGou
我很懒,什么都没有写
展开
-
static 的作用
1. 在函数体内,一个被声明为静态的变量,在该函数被调用的过程中其值不变;2. 在模块内(但在函数体外),一个被声明为静态的变量,可以被该模块内的任何函数调用,但不能被模块外的函数调用,是一个本地的全局变量;3. 在模块内,一个被声明为静态的函数,只可以被该模块内的其他函数调用,也就是说被限制在本地范围内使用原创 2018-01-10 22:47:12 · 262 阅读 · 0 评论 -
C++教程 | 菜鸟教程
点击打开链接原创 2018-05-30 09:00:47 · 5877 阅读 · 0 评论 -
static全局变量与普通全局变量的区别?static局部变量与普通局部变量的区别?static全局函数与普通全局函数的区别?
1.static全局变量只初使化一次,防止在其他文件单元中被引用;2.static局部变量只被初始化一次,下一次依据上一次结果值;3.static函数在内存中只有一份,普通函数在每个被调用中维持一份拷贝C语言中讲讲static变量和static函数有什么作用static关键字有两种意思,你看上下文来判断1,表示变量是静态存储变量表示变量存放在静态存储区.2,表示...转载 2018-04-12 09:05:56 · 617 阅读 · 0 评论 -
堆、栈、程序区、静态数据区、字符常量区的介绍与区别
1、 栈区(stack sagment):由编译器自动分配释放,存放函数的参数的值,局部变量的值等。在Windows下,栈是高向低地址扩展的数据结构,是一块连续的内存的区域。这句话的意思是栈顶的地址和栈的最大容量是系统预先规定好的,在WINDOWS下,栈的大小是2M(也有的是1M...转载 2018-03-05 10:47:12 · 446 阅读 · 0 评论 -
单向链表(1)-创建
#include <stdio.h>#include <stdlib.h>struct node{ int date; struct node* next;};int main(){ struct node *p, *p1, *head; head = p = ( struct node* )malloc(sizeof(st...原创 2018-03-07 14:53:10 · 486 阅读 · 0 评论 -
freetype 安装+使用
freetype-2.4.10安装包下载地址:http://download.youkuaiyun.com/download/jerrygou/10249543一、PC 机安装+使用freetype1. 解压 tar xjf freetype-2.4.10.tar.bz22. 配置 ./configure3. 编译 make4. 安装 mkae install会自动将freetype的所有头...原创 2018-02-11 14:58:24 · 3003 阅读 · 0 评论 -
#define的使用
1.简单的define定义#define MAXTIME 1000一个简单的MAXTIME就定义好了,它代表1000,如果在程序里面写if(i编译器在处理这个代码之前会对MAXTIME进行处理替换为1000。这样的定义看起来类似于普通的常量定义CONST,但也有着不同,因为define的定义更像是简单的文本替换,而不是作为一个量来使用,这个问题在下面反映的尤为突出。2.define的“函数定义”d原创 2018-01-10 20:43:05 · 448 阅读 · 0 评论 -
野指针及c++指针使用注意点
野指针及c++指针使用注意点避免野指针的产生“野指针”的成因主要有:1)指针变量没有被初始化。任何指针变量刚被创建时不会自动成为NULL指针,它的缺省值是随机的,它会乱指一气。所以,指针变量在创建的同时应当被初始化,要么将指针设置为NULL,要么让它指向合法的内存。char *p; //此时p为野指针 2)指针p被free或者delete之后,没有置为NULL,转载 2018-01-16 23:25:32 · 339 阅读 · 0 评论 -
C++ 虚拟继承
概念:解决不同途径继承来的同名的数据成员内存有不同的拷贝函数造成数据不一致的问题,将共同的基类设置为虚基类。这时从不同的路径继承过来的同名数据成员在内存中就只有一个拷贝,同一个函数也只有一个映射。 解决问题:解决了二义性问题,节省了内存,避免了数据不一致的问题。 使用情景:当在多条继承路径上有一个公共的基类,在这些路径中的某几条汇合处,这个公共的基类就会产生多个实例(或多个副本),原创 2018-01-16 20:20:54 · 306 阅读 · 0 评论 -
C++ 类对象大小计算(二)含有虚函数类
五、包含虚函数的类 包含虚函数的类,对象生成时,会在类对象当中插入一个指针,这个指针称做虚函数表指针,简称虚表指针(vPtr)。该指针指向一个虚函数表(简称虚表),虚函数表中存储了虚函数的入口地址。基类当中有虚函数时,会产生该虚函数表;创建基类对象,对象中的vPtr会指向该表;调用虚函数时,是通过vPtr在此表当中寻找函数入口地址的。 当派生类继承含有虚函数的子转载 2018-01-13 16:49:31 · 1080 阅读 · 0 评论 -
C++ 类对象大小计算(一)常规情况
C++类对象计算需要考虑成员变量大小,内存对齐,是否有虚函数,是否有虚继承等1. 空类#include using namespace std;class A {};class B : public A{};class C : public B{};int main() { A a; B b; C c; cout<<"size of a:"<<si转载 2018-01-13 16:24:08 · 3190 阅读 · 1 评论 -
虚函数与纯虚函数
首先:强调一个概念定义一个函数为虚函数,不代表函数为不被实现的函数。定义他为虚函数是为了允许用基类的指针来调用子类的这个函数。定义一个函数为纯虚函数,才代表函数没有被实现。定义纯虚函数是为了实现一个接口,起到一个规范的作用,规范继承这个类的程序员必须实现这个函数。1、简介假设我们有下面的类层次:class A{public: virtual void foo转载 2018-01-13 15:11:30 · 215 阅读 · 0 评论 -
字节对齐问题探讨
引言 考虑下面的结构体定义:1 typedef struct{2 char c1;3 short s; 4 char c2; 5 int i;6 }T_FOO; 假设这个结构体的成员在内存中是紧凑排列的,且c1的起始地址是0,则s的地址就是1,c2的地址是3,i的地址是4。 现在,我们编写一个简单的程转载 2018-01-13 14:30:26 · 694 阅读 · 0 评论 -
堆和栈的区别
一、预备知识—程序的内存分配 一个由C/C++编译的程序占用的内存分为以下几个部分 1、栈区(stack)— 由编译器自动分配释放,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈。 2、堆区(heap)— 一般由程序员分配释放,若程序员不释放,程序结束时可能由OS回收。注意它与数据结构中的堆是两回事,分配方式倒是类似于链表,呵呵。转载 2018-01-11 22:00:47 · 236 阅读 · 0 评论 -
#define 与 const 的特点及区别
#define1.只是用作文本替换2.生命周期起于预处理段、止于编译期3.存在于代码段4.只是一个常数、一个命令中的参数,并没有实际的存在5.无数据类型const1.存在于数据段、堆栈有分配空间2.编译运行阶段使用3.有实际的存在,并可被调用、传递4.有数据类型,编译运行时会进行类型检查define 注意“边缘效应”, 例:#define原创 2018-01-10 22:13:08 · 410 阅读 · 0 评论