随笔分类 -  C/C++

C/C++中获取数组的长度
摘要:C/C++中没有提供直接获取数组长度的函数。对于存放字符串的字符数组,可用strlen函数获取长度。 如:char a[]="hello world";int count = strlen(a); 对于其他类型的数组,可使用sizeof(array)/sizeof(array[0]),计算长度。 在 阅读全文

posted @ 2016-05-27 17:15 迪米特 阅读(13853) 评论(0) 推荐(2) 编辑

C++程序文件链接
摘要:1.什么是转换单元程序中的每个.cpp文件和它包含的所有头文件称为一个转换单元。编译器处理每个转换单元,生成二进制对象文件,用扩展名.obj来标识。链接器将对象文件组合起来,生成一个可执行文件,用扩展名.exe来标识。 2.作用域使用{}来限定变量的作用域 内部作用域可以定义一个和外部作用域相同的名 阅读全文

posted @ 2016-05-27 10:26 迪米特 阅读(1154) 评论(0) 推荐(1) 编辑

C++范围解析运算符::的使用
摘要:1.范围解析运算符的作用范围解析运算符 :: 用于标识不同范围内使用的标识符。 2.范围解析运算符的使用1)用于命名空间和类 2)没有范围限定符的表示全局命名空间。 3)标识通过 using 指定成员的命名空间的命名空间 4)标识嵌套的命名空间,标识嵌套的类 5)调用类的静态成员 6)用于枚举 参考 阅读全文

posted @ 2016-05-26 15:49 迪米特 阅读(4307) 评论(0) 推荐(0) 编辑

C程序的内存布局
摘要:1.代码段(code或text): 通常是指用来存放程序执行代码的一块内存区域。这部分区域的大小在程序运行前就已经确定,并且内存区域通常属于只读。 某些架构也允许代码段为可写,即允许修改程序。在代码段中,也有可能包含一些只读的常数变量,例如字符串常量等,但一般都是放在只读数据段中。 2.数据段(da 阅读全文

posted @ 2016-05-26 11:16 迪米特 阅读(307) 评论(0) 推荐(0) 编辑

ARM中LDR伪指令与LDR加载指令
摘要:ARM指令集中,LDR通常都是作加载指令的,但是它也可以作伪指令。 LDR伪指令的形式是“LDR Rn,=expr”。下面举一个例子来说明它的用法。 COUNT EQU 0x40003100 …… LDR R1,=COUNT MOV R0,#0 STR R0,[R1] COUNT是我们定义的一个变量 阅读全文

posted @ 2016-05-26 09:35 迪米特 阅读(419) 评论(0) 推荐(0) 编辑

C++ explicit关键字
摘要:按照默认规定,只有一个参数的构造函数也定义了一个隐式转换,将该构造函数对应数据类型的数据转换为该类对象,如下面所示: class String { String ( const char* p ); // 用C风格的字符串p作为初始化值 //… } String s1 = “hello”; //OK 阅读全文

posted @ 2016-05-25 09:13 迪米特 阅读(359) 评论(0) 推荐(0) 编辑

C++内联函数详解
摘要:1.函数调用原理 "编译过程的最终产品是可执行程序--由一组机器语言指令组成。运行程序时,操作系统将这些指令载入计算机内存中,因此每条指令都有特定的内存地址。计算机随后将逐步执行这些指令。有时(如有循环和分支语句时),将跳过一些指令,向前或向后跳到特定地址。常规函数调用也使程序跳到另一个地址(函数的 阅读全文

posted @ 2016-05-24 14:04 迪米特 阅读(25386) 评论(0) 推荐(2) 编辑

C++友元详解
摘要:1.什么是友元在一个类A中,将类B声明为友元类,则类B可以访问类A的私有成员和保护成员。另外,也可以将函数声明为友元函数。 2.什么时候用到友元若不同的类之间某些共享数据成员,可以使用友元,简化类的设计。 3.友元类友元类的声明:friend class 类名示例如下:对于电视和遥控器来说,都共享频 阅读全文

posted @ 2016-05-24 11:10 迪米特 阅读(1083) 评论(0) 推荐(0) 编辑

C++ new操作符详解
摘要:一.new操作符的概念 我们通常讲的new是指的是new operator,其实还有另外两个概念,operator new 和 placement new。 1、new operator 我们在使用new operator的时候,实际上是执行了三个步骤: 1)调用operator new分配内存 ; 阅读全文

posted @ 2016-05-23 10:58 迪米特 阅读(6130) 评论(1) 推荐(3) 编辑

MSVC與CRT的恩怨情仇
摘要:很久沒有寫程式設計入門知識的相關文章了,這篇文章要來談談程式庫 (Library) 連結,以及關於 MSVC 與 CRT 之間的種種恩怨情仇。 如果你使用的作業系統是 Linux、Mac 或其他非 Windows 平台,你可以忽略這篇文章;如果你使用的作業系統是 Windows 平台,但沒有用 Mi 阅读全文

posted @ 2016-05-19 18:14 迪米特 阅读(805) 评论(0) 推荐(0) 编辑

C/C++预定义宏
摘要:编译器识别预定义的 ANSI/ISO C99 C 预处理宏,Microsoft C++ 实现将提供更多宏。这些预处理器宏不带参数,并且不能重新定义。 ANSI 兼容的预定义宏 __FILE__,__LINE__,__func__,__DATE__,__TIME__,__TIMESTAMP__ 1 . 阅读全文

posted @ 2016-05-19 14:42 迪米特 阅读(1509) 评论(0) 推荐(0) 编辑

C++中typename和class的区别
摘要:在c++Template中很多地方都用到了typename与class这两个关键字,而且好像可以替换,是不是这两个关键字完全一样呢? 相信学习C++的人对class这个关键字都非常明白,class用于定义类,在模板引入c++后,最初定义模板的方法为: template<class T>...... 阅读全文

posted @ 2016-05-18 16:43 迪米特 阅读(2048) 评论(0) 推荐(0) 编辑

SDL2中文教程
摘要:SDL2.0 Tutorial Index 原文地址:SDL 2.0 Tutorial Index Welcome! 下面的教程旨在为你提供一个SDL2.0以及c++中游戏设计和相关概念的介绍。在本教程中,我们假定你对C++有一定程度上的知识,至少了解数组,vector,控制结构,函数还有指针。 如 阅读全文

posted @ 2016-05-18 11:12 迪米特 阅读(7620) 评论(0) 推荐(0) 编辑

SDL介绍
摘要:SDL库的作用说白了就是封装了复杂的视音频底层操作,简化了视音频处理的难度。 以下转自WiKi: SDL(Simple DirectMedia Layer)是一套开放源代码的跨平台多媒体开发库,使用C语言写成。SDL提供了数种控制图像、声音、输出入的函数,让开发者只要用相同或是相似的代码就可以开发出 阅读全文

posted @ 2016-05-18 11:09 迪米特 阅读(673) 评论(0) 推荐(0) 编辑

C++引用与指针
摘要:1.什么是引用引用是某一对象(变量)的一个别名。int m=0;int &n=m;n=1;cout<<"n "<<n<<endl;cout<<"m "<<m<<endl;&表示n是m的引用,即别名,对n的任何操作就是对m的操作。所以n既不是m的拷贝,也不是指向m的指针,其实n就是m它自己。将n的值赋 阅读全文

posted @ 2016-05-11 11:04 迪米特 阅读(210) 评论(0) 推荐(0) 编辑

C--预处理指令
摘要:源代码在编译成机器指令之前,要进行预处理。预处理功能主要包括宏定义,文件包含,条件编译三部分。这些预处理操作发生在编译程序过程中,它们会修改程序的语句,但不会干涉程序的执行。ANSI标准定义的C语言预处理程序包括下列命令:指令 用途 #include 包含一个源代码文件 #define 定义宏 #u 阅读全文

posted @ 2016-05-06 18:07 迪米特 阅读(328) 评论(0) 推荐(0) 编辑

C++ Dll 编写入门
摘要:一、前言 自从微软推出16位的Windows操作系统起,此后每种版本的Windows操作系统都非常依赖于动态链接库(DLL)中的函数和数据,实际上 Windows操作系统中几乎所有的内容都由DLL以一种或另外一种形式代表着,例如显示的字体和图标存储在GDI DLL中、显示Windows桌面和处理用户 阅读全文

posted @ 2016-04-26 17:36 迪米特 阅读(787) 评论(0) 推荐(0) 编辑

posix多线程--线程私有数据
摘要:1.当多个线程共享一个变量时,将该变量定义为静态或外部变量,使用互斥量确保共享变量的安全访问。如果每个线程都需要一个私有变量值,则该值成为线程的私有数据。程序创建一个键,每个线程独立地设定或得到自己的键值,各线程间私有数据互不影响。 2.建立线程私有数据int pthread_key_create( 阅读全文

posted @ 2016-04-18 16:41 迪米特 阅读(492) 评论(0) 推荐(0) 编辑

posix多线程--线程取消
摘要:1.三种取消状态Off 禁用取消Deferred 推迟取消:在下一个取消点执行取消Asynchronous 异步取消:可以随时执行取消 int pthread_cancel(pthread_t thread) 2.推迟取消:在下一个取消点执行取消 Pthreads系统上的某些函数会被作为取消点,如p 阅读全文

posted @ 2016-04-17 23:56 迪米特 阅读(427) 评论(0) 推荐(0) 编辑

posix多线程--三种基本线程编程模型
摘要:本文介绍了三种构建线程解决方案的方式。 一、流水线:每个线程执行同一种操作,并把操作结果传递给下一步骤的线程。 代码示例如下:终端输入一个int值,每个线程将该值加1,并将结果传给下一个线程。 #include<stdio.h> #include<pthread.h> typedef struct 阅读全文

posted @ 2016-04-15 15:20 迪米特 阅读(952) 评论(0) 推荐(0) 编辑

导航