
c++
文章平均质量分 83
define_us
互联网编程/架构设计/数学崇拜
展开
-
从c语言的define说开去
在C语言中,define用作在预处理中将该模块(.c)中的所有的出现的宏名都进行替换。(1)在define后面的#和##在#define中,标准C只定义了#和##两种操作。#用来把参数转换成字符串,##则用来连接前后两个参数,把它们变成一个字符串。#include #define paster( n ) printf( "token " #n" = %d\n "原创 2014-03-23 22:54:12 · 672 阅读 · 0 评论 -
CUDA基础教程(2):费米架构
1、总体架构 费米架构的计算能力为2.0和2.1。G80/G92的设备为1.0,1.1,1.2。GT200架构为1.3。3.0以上的设备是开普勒架构的设备。在费米架构设备上,每个线程块至多可以容纳1024个线程。在每个线程块的线程不是很多时(小于等于192时),一个SM可以容纳8个线程块。 每个线程块中的线程数固定设置为192-768时。可以获得GPU的百分百利用率。 执行每个线程块的事件是不原创 2016-07-26 17:26:11 · 2519 阅读 · 0 评论 -
OpenGL基础教程(2):着色器
GLSL是一种专门为图形开发的编程语言,但是它与C语言非常类似。(1)图形管线 图形管线有四个处理阶段 顶点着色阶段: 细分着色阶段:可选阶段 几何着色极段:可选阶段 片元着色阶段(2)GL的类型有 基本类型 float 对应的向量类型 vec2 vec3 vec4 对应的矩阵类型 mat2 mat3 mat4 基本类型 double 对应的向量类型 dvec2 dvec3原创 2016-07-26 17:54:31 · 350 阅读 · 0 评论 -
JAVA C# C/C++之比教学:继承
一、C#的继承 (1)C#派生类只能有一个基类,也就是说不支持多重继承。但是可以实现多个接口。 (2)C#只存在public级别的继承。(3)继承中,父类的私有成员也被继承了,但是他们却不可以被访问namespace sandbox{ class B { public B() { System.Console.WriteLi原创 2016-07-18 09:47:15 · 544 阅读 · 0 评论 -
OpenGL基础教程1
1、概述 openGL有以下优点 (1)与C语言紧密结合 (2)强大的可移植性 (3)改性能的图形渲染 在OpenGL中,使用齐次坐标来表示空间中的点和方向。用(x,y,z,1)来表示空间中的点,用(x,y,z,0)来表示空间中的方向。这让我们可以使用一个公式对点和方向进行运算。2、基本绘图 可以用OpenGL来描述点,然后用点来描述集合图形 典型的使用模式如下 glClear原创 2016-08-17 19:41:12 · 415 阅读 · 1 评论 -
C++和Java:深入看常量
对于全局变量,全局常量,静态变量,文字常量等。在编译阶段,C++就为他们分配了内存。 复习下可执行文件的构成:一个典型的BSS段标记 全局变量int inbss[1002000];float fA;对应的汇编代码的标记为_BSS SEGMENT?inbss@@3PAHA DD 0f4a10H DUP (?) ; inbss?fA@@3MA DD 01H D原创 2016-08-27 18:16:58 · 508 阅读 · 0 评论 -
C++ JAVA的比较学:布尔量
1、C++ 第一个问题是,bool量的大小。在C++中,布尔量实际上是一个byte,而不是一个int。当然也不可能是一个bit。 第二个问题,bool量的存储值。 原生的C++没有boolean这种数据类型。 如果将bool类型强制转化为int类型。true是1,false是0。事实上,如果直接打印bool量的话(转化为char类型)也是0和1。不过,跟int转化为char一样(如果你不是期原创 2016-08-27 20:19:12 · 1803 阅读 · 0 评论 -
c++ 的const类型
1、定义一个常量 const int name = value 2、定义一个常量指针或者定义一个指针指向一个常量 const char *pContent; char* const pContent; const char* const pContent; 前者是指针指向内容不能变化。第二句是指针本身不能变化。第三局是都不能变化。class A{public: A(int p原创 2016-08-28 19:59:59 · 409 阅读 · 0 评论 -
C++ 基础:传参的基本形式-基本类型,对象,引用和指针
(1)基本类型 (2)直接传递对象class A{public: A(int param) { m_a = param; } A(const A& b) { m_a = b.m_a; std::cout << "copy method" << std::endl;//输出copy method } i原创 2016-08-28 22:44:20 · 1002 阅读 · 0 评论 -
C++ 类型转换
在这里,我们将详细解释C++类型转换的情况。1、隐式类型转换 在下列四种情形时会发生隐式类型转换 a)在混合表达式中,操作数会被转化为相同的类型 如a>b a+b等 b)在条件表达式中,操作数会被转化为bool类型 if(a) c)在初始化和赋值中,也会发生类型转换 int a = 3.2 int p;p=0(0在这里被转换为了一个int类型的NULL指针) d)在函数调用时转换的原创 2016-08-27 21:34:02 · 419 阅读 · 0 评论 -
JAVA和C++比教学 :算式执行顺序
1、JAVA java中常见的运算符执行顺序如下 在java中,计算的时候都是优先级高的先执行。优先级相同的遵循其关联方向。详细的优先级表格如下优先级 操作符 含义 关联性 用法 ----------------------------------------------------------------1 [ ] 数组下标 左原创 2016-08-29 21:31:37 · 890 阅读 · 0 评论 -
JAVA C# C/C++之比教学:访问控制机制
、javajava中表示权限的关键字分别为public,protected,private。没有friendly这个,什么都不写的话也是一种不同的权限表示。class Mall{ public String mallName;}class SuperMarket extends Mall{ public void Show(){ System.o...原创 2016-05-06 19:33:32 · 847 阅读 · 0 评论 -
C++的初始化顺序
1、C++的全局对象是在main函数被调用前初始化的。 2、当初始化一个对象时,遵循先父类构造函数,再子类成员,最后子类的初始化函数。 3、初始化列表的初始化顺序和列表顺序无关,只和类中的声明顺序有关。 几种情况必须在初始化列表中进行初始化 (1)类成员为const类型 (2)类成员为引用 (3)类成员没有默认构造函数的类的类型所以,下面函数的初始化顺序为B-C-D-A-Main#inc原创 2016-09-03 22:18:14 · 1180 阅读 · 0 评论 -
OpenGL基础教程(1):体系结构一览
gl库是核心库。包含115个函数,函数名前缀为gl glu库是实用库。包含43个函数,函数名前缀为glu,封装了gl库。 aux库是辅助库。包含31个函数,函数前缀为aux,windows平台下由glaux.dll负责解释实行。在实际中,已经被glut所替代。可以用来绘制网状体和实心体。 glut是实用工具库,具有良好的跨平台性。函数名前缀为glut。目的是隐藏不同平台的API的复杂度。可以在原创 2016-09-04 23:16:53 · 1436 阅读 · 0 评论 -
计算机的内存管理程序的内存模型
(1)代码段 (2)只读数据段(rodata) (3)已初始化的读写数据段(data) (4)未初始化的数据段(BSS) 在程序一开始时会将所有的清零 (5)堆 (6)栈int a = 0; //全局初始化区。 data段static int b=20; //全局初始化区。 data段char *p1; //全局未初始化区 bss段const int原创 2016-07-14 12:34:59 · 574 阅读 · 0 评论 -
JAVA C# C/C++比教学:泛型
所谓泛型,便是指参数化类型 1、JAVA java中允许使用泛型定义接口,类和方法。如 //泛型方法 public <T1, T2> void printPoint(T1 x, T2 y){ T1 m = x; T2 n = y; System.out.println("This point is:" + m + ", " + n);原创 2016-06-06 15:59:35 · 408 阅读 · 0 评论 -
JAVA C# C/C++之比教学:编译机制
(1)预编译指令 C#中也有#define的编译器指令,但是不能用于替换代码中的常数,只能用于条件编译。被条件编译指令跳过的代码在VS中被灰色表示。 define 、undef 、if、elif、else、endif用于条件编译 warning、error用于手动输出警告和错误信息 region endregion用于组成代码块 line用于修改默认的行号 pragma用于抑制警告报告j原创 2016-06-04 18:47:35 · 666 阅读 · 0 评论 -
C++ reinterpret_cast,const_cast等 显式类型转换总结(转载)
转载自http://kooyee.iteye.com/blog/364632,感谢原作者reinterpret_cast,const_cast,static_cast,dynamic_cast 显式类型转换#includeint main(void){//reinterpret_cast//将一个类型指针转换为另一个类型指针,这种在转换不修改指针变量值数据存放格式//只需在编译转载 2014-10-18 00:56:28 · 412 阅读 · 0 评论 -
c++随笔
virtual关键字:基函数定义了virtual,继承类的该函数也就具有virtual属性。原创 2015-08-09 15:53:28 · 426 阅读 · 0 评论 -
嵌入式开发时的c语言
1、扩展关键字(一定要注意有时候下划线是两个)asm也可以写成 _asm。功能是在c程序中直接嵌入汇编语言。Asm(“string”);其中string必须是有效的汇编语句。__interrupt放在函数前面,标志中断函数。下面这段程序是异步串行口UART0的接受中断函数。UART0RX_VECTOR为异步串行口UART0的接受中断向转载 2014-03-23 23:18:49 · 802 阅读 · 0 评论 -
c/c++的全局变量初始化顺序
(1)基本类型是在编译器完成全局变量初始化的(2)类对象是在主函数进入之前调用构造函数进行初始化的。可以参考如下文章http://blog.youkuaiyun.com/yang_yulei/article/details/8105001原创 2015-11-05 16:54:55 · 936 阅读 · 0 评论 -
c++中的继承
常见的三种继承方式的效果如下:1、public继承不改变基类成员的访问权限2、private继承使得基类所有成员在子类中的访问权限变为private3、protected继承将基类中public成员变为子类的protected成员,其它成员的访问 权限不变。4、基类中的private成员不受继承方式的影响,子类永远无权访问原创 2015-11-05 18:58:42 · 289 阅读 · 0 评论 -
内存管理和泄露
内存泄露最简单的原因是编程者在手动申请内存空间后没有释放造成的。关于程序分配内存空间的简单实例如下int a = 0; //全局初始化区char *p1; //全局未初始化区int main() { int b; //栈 char s[] = /"abc/"; //栈 char *p2; //栈 char *p3 = /"123456/"; //123456//0在常量区原创 2015-10-20 19:48:55 · 344 阅读 · 0 评论 -
c++模板
模板与泛型编程(1)首先关于几个概念,像这样templatetemplate上述两个关键字 class typename有完全相同过的含义,可以互换使用。是模板的定义,下面的定义语句分别是声明函数模板templateint compare(const T &v1,const T &v2)templateint compare2(const T &v1,const T原创 2014-12-05 10:53:18 · 651 阅读 · 0 评论 -
c++数组访问越界的问题
#include "stdafx.h"int main(){ printf("hello,world!"); int a; char b[16] = "abcd"; int c; int d; a = 1; c = 2; printf("a=%d,c=%d\n", a, c); memset(b, 0, 32); printf("a=%d,c=%d\n",原创 2015-10-20 19:51:11 · 3009 阅读 · 1 评论 -
JAVA C# C/C++之比较学:初始化顺序
1、javajava没有全局变量。在包含main类中声明的static final会最先被初始化。在每一个类被实例化的时候,其所包含的static final都会被初始化。然后执行构造函数。java一般采用static final来表示初始化的全局变量。public class TestInitOrder { public static final GlobalParam m_i =原创 2015-11-13 22:12:32 · 407 阅读 · 0 评论 -
COM教程(0-序章)
COM(Component Object Model,组件对象模型(0)从dll到com问题是,不同语言,不同编译器产生的二进制代码如何交互?还有dll升级问题。一个程序更新版本更改了dll的版本,另外一个程序怎么办?这就是所谓的dll hell(1)接口定义语言(IDL)利用VS中自带的MIDL.exe编译器,其可以解析IDL文件,并产生C/C++头文件。几乎每个com方法都会返回一个HRESU原创 2015-11-30 16:12:40 · 951 阅读 · 0 评论 -
com教程(1-使用VS2015编写ATL示例)
首先做个demo(1)首先新建ATL项目,进入向导,如图下选择(2)VS2015自动生成两个项目,其中一个和你刚才新建的项目同名,同名项目上右击,添加类,然后选择ATL简单对象电机添加,输入类名即可(3)在类视图下,选择刚才添加类名前面+I的类,右击添加方法如图所示,添加参数,注意,只有指针类型的参数才能被设置为输出参数(4)在所建类的cpp文件中,补全代码实现原创 2015-11-30 19:03:48 · 9482 阅读 · 0 评论 -
JAVA C# C/C++之比较学:参数传递
首先,感谢http://www.cnblogs.com/jacktag/p/3173415.html我们的定义为值传递是传递栈中的值;引用传递是传递栈地址。注意,引用传递不是传递堆中的地址,而是传递堆栈中的地址。1、java在互联网上,大部分认为java是按值传递的。这样的说法不能说是错误的。但是更深层次的理解是,对于java而言,堆栈上只能分配基本类型的存储和对对象的引用。而所有对象原创 2015-11-13 17:28:43 · 531 阅读 · 0 评论 -
C++和C的不同
主要的增强: 类型检查更为严格 增加了面向对象机制 增加了泛型(模板) 增加了异常处理 增加了运算符重载 增加了标准模板库1、C++标准库和标准模板库(STL) STL其实在C++出现之前就有了,是由惠普实验室开发的。主要包括下列头文件 算法部分: 主要提供大约100个实现算法的模板函数。 algorithm 比较,查找,替换,排序,合并,遍历操作,复制,修改 n原创 2016-06-06 11:15:32 · 285 阅读 · 0 评论 -
C++中的虚函数及其实现方式
首先看代码,不采用虚函数的情况// ConsoleApplication1.cpp : 定义控制台应用程序的入口点。//#include "stdafx.h"#include using namespace std;class A {private: int m_kk;public: A() { m_kk = 100; } void print() { co原创 2015-11-05 20:22:00 · 872 阅读 · 1 评论