博客园 - Bigcoder
uuid:24b78886-0ed1-41c2-8670-e3f31dcf42c4;id=57464
2014-05-28T14:50:11Z
Bigcoder
https://www.cnblogs.com/csyisong/
feed.cnblogs.com
https://www.cnblogs.com/csyisong/archive/2010/12/19/1910816.html
两个类相互嵌套引用,如何避免循环嵌套引用 - Bigcoder
文件1:A.h#include "B.h"class B;class A{ B b;};文件2:B.h#include "A.h"class A;class B{ A a;};问题:编译无法通过。原因:执行#include "A.h"时,包含了B.h,包含B.h,又包含了A.h,循环嵌套包含。解决办法: 方法1, 将class A 与class B的声明放在同一个文件中,去掉#include "A.h"与#include "B.h". 方法2,去掉#include "A.h",避免循环嵌套.
2010-12-19T14:01:00Z
2010-12-19T14:01:00Z
Bigcoder
https://www.cnblogs.com/csyisong/
【摘要】文件1:A.h#include "B.h"class B;class A{ B b;};文件2:B.h#include "A.h"class A;class B{ A a;};问题:编译无法通过。原因:执行#include "A.h"时,包含了B.h,包含B.h,又包含了A.h,循环嵌套包含。解决办法: 方法1, 将class A 与class B的声明放在同一个文件中,去掉#include "A.h"与#include "B.h". 方法2,去掉#include "A.h",避免循环嵌套. <a href="https://www.cnblogs.com/csyisong/archive/2010/12/19/1910816.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/csyisong/archive/2010/10/22/1858115.html
Windows操作系统下创建进程的过程 - Bigcoder
(转载)windows下创建进程的步骤: 进程(Process)是具有一定独立功能的程序关于某个数据集合上的一次运行活动,是系统进行资源分配和调度的一个独立单位。程序只是一组指令的有序集合,它本身没有任何运行的含义,只是一个静态实体。而进程则不同,它是程序在某个数据集上的执行,是一个动态实体。它因创...
2010-10-22T03:09:00Z
2010-10-22T03:09:00Z
Bigcoder
https://www.cnblogs.com/csyisong/
【摘要】(转载)windows下创建进程的步骤: 进程(Process)是具有一定独立功能的程序关于某个数据集合上的一次运行活动,是系统进行资源分配和调度的一个独立单位。程序只是一组指令的有序集合,它本身没有任何运行的含义,只是一个静态实体。而进程则不同,它是程序在某个数据集上的执行,是一个动态实体。它因创... <a href="https://www.cnblogs.com/csyisong/archive/2010/10/22/1858115.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/csyisong/archive/2010/09/26/1836257.html
单链表的逆置 - Bigcoder
单链表的逆置的实现:(1)算法structlink{intdata;structlink*next;};linkreverse(linkx){if(NULL==x)returnNULL;linkt=NULL;linkr=NULL,y=x;//(0)while(y!=NULL){t=y->next;//(1)y->next=r;//(2)r=y;//(3)y=t;//(4)}return...
2010-09-26T12:55:00Z
2010-09-26T12:55:00Z
Bigcoder
https://www.cnblogs.com/csyisong/
【摘要】单链表的逆置的实现:(1)算法structlink{intdata;structlink*next;};linkreverse(linkx){if(NULL==x)returnNULL;linkt=NULL;linkr=NULL,y=x;//(0)while(y!=NULL){t=y->next;//(1)y->next=r;//(2)r=y;//(3)y=t;//(4)}return... <a href="https://www.cnblogs.com/csyisong/archive/2010/09/26/1836257.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/csyisong/archive/2010/09/25/1834888.html
临时变量,局部变量的return操作 - Bigcoder
如果函数返回值是一个对象,要考虑 return 语句的效率。例如 return String(s1 + s2); 这是临时对象的语法,表示“创建一个临时对象并返回它” 。不要以为它与“先创建一个局部对象 temp 并返回它的结果”是等价的,如 String temp(s1 + s2); return temp; 实质不然,上述代码将发生三件事。首先...
2010-09-25T14:35:00Z
2010-09-25T14:35:00Z
Bigcoder
https://www.cnblogs.com/csyisong/
【摘要】如果函数返回值是一个对象,要考虑 return 语句的效率。例如 return String(s1 + s2); 这是临时对象的语法,表示“创建一个临时对象并返回它” 。不要以为它与“先创建一个局部对象 temp 并返回它的结果”是等价的,如 String temp(s1 + s2); return temp; 实质不然,上述代码将发生三件事。首先... <a href="https://www.cnblogs.com/csyisong/archive/2010/09/25/1834888.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/csyisong/archive/2010/09/25/1834858.html
将“引用”作为函数返回值类型的格式、好处和需要遵守的规则? - Bigcoder
格式:类型标识符 &函数名(形参列表及类型说明){ //函数体 }好处:在内存中不产生被返回值的副本;(注意:正是因为这点原因,所以返回一个局部变量的引用是不可取的。因为随着该局部变量生存期的结束,相应的引用也会失效,产生runtime error! 注意事项:(1)不能返回局部变量的引用。这条可以参照Effective C++[1]的Item 31。主要原因是局部变量会在函数返回后被销毁...
2010-09-25T13:18:00Z
2010-09-25T13:18:00Z
Bigcoder
https://www.cnblogs.com/csyisong/
【摘要】格式:类型标识符 &函数名(形参列表及类型说明){ //函数体 }好处:在内存中不产生被返回值的副本;(注意:正是因为这点原因,所以返回一个局部变量的引用是不可取的。因为随着该局部变量生存期的结束,相应的引用也会失效,产生runtime error! 注意事项:(1)不能返回局部变量的引用。这条可以参照Effective C++[1]的Item 31。主要原因是局部变量会在函数返回后被销毁... <a href="https://www.cnblogs.com/csyisong/archive/2010/09/25/1834858.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/csyisong/archive/2010/09/25/1834848.html
函数返回值—返回局部变量 - Bigcoder
看看下面的程序的输出: #include <stdio.h> char *returnStr() { char *p="hello world!"; return p; } int main() { char *str; str=returnStr(); printf("%s\n", str); return 0; } 这个没有任何问题,因为"hello world!"是一...
2010-09-25T12:48:00Z
2010-09-25T12:48:00Z
Bigcoder
https://www.cnblogs.com/csyisong/
【摘要】看看下面的程序的输出: #include <stdio.h> char *returnStr() { char *p="hello world!"; return p; } int main() { char *str; str=returnStr(); printf("%s\n", str); return 0; } 这个没有任何问题,因为"hello world!"是一... <a href="https://www.cnblogs.com/csyisong/archive/2010/09/25/1834848.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/csyisong/archive/2010/04/09/1708690.html
GLSL之环境纹理 - Bigcoder
之前也看过环境纹理的实现原理,可是理解总不是那么透彻,今天再次看了一遍,以作巩固。 环境纹理的实现方法有多种,其中典型的方法包括:立方体纹理、球型纹理、抛物线纹理。在这三种方法中,立方体纹理的效果最好。下面简单介绍如何使用立方体纹理。首先,准备六张在六个方向上的环境纹理图片,分别是在positive_x,negative_x,positive_y,negative_y,positive_z,ne...
2010-04-09T15:16:00Z
2010-04-09T15:16:00Z
Bigcoder
https://www.cnblogs.com/csyisong/
【摘要】之前也看过环境纹理的实现原理,可是理解总不是那么透彻,今天再次看了一遍,以作巩固。 环境纹理的实现方法有多种,其中典型的方法包括:立方体纹理、球型纹理、抛物线纹理。在这三种方法中,立方体纹理的效果最好。下面简单介绍如何使用立方体纹理。首先,准备六张在六个方向上的环境纹理图片,分别是在positive_x,negative_x,positive_y,negative_y,positive_z,ne... <a href="https://www.cnblogs.com/csyisong/archive/2010/04/09/1708690.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/csyisong/archive/2010/03/18/1688877.html
从一道面试题看指针与数组的区别 - Bigcoder
题记: 关于指针,推荐看一下csdn飞天御剑流的《再再论指针》,相信对C语言指针会有一个更为清晰全面的理解。 指针是C语言的精华,它是一柄“双刃剑”,用的好与坏就看使用者的功力了。下面就一道面试题,看一下指针与数组的区别。 char *p1, *p2;char ch[12];char **pp;p1 = ch;pp = &ch;p2 = *pp;问p1和p2是...
2010-03-18T05:40:00Z
2010-03-18T05:40:00Z
Bigcoder
https://www.cnblogs.com/csyisong/
【摘要】题记: 关于指针,推荐看一下csdn飞天御剑流的《再再论指针》,相信对C语言指针会有一个更为清晰全面的理解。 指针是C语言的精华,它是一柄“双刃剑”,用的好与坏就看使用者的功力了。下面就一道面试题,看一下指针与数组的区别。 char *p1, *p2;char ch[12];char **pp;p1 = ch;pp = &ch;p2 = *pp;问p1和p2是... <a href="https://www.cnblogs.com/csyisong/archive/2010/03/18/1688877.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/csyisong/archive/2010/03/09/1682057.html
C++中堆和栈的区别,自由存储区、全局静态存储区和常量存储区 - Bigcoder
C++中堆和栈的区别,自由存储区、全局/静态存储区和常量存储区 文章来自一个论坛里的回帖,哪个论坛记不得了! 在C++中,内存分成5个区,他们分别是堆、栈、自由存储区、全局/静态存储区和常量存储区。 栈,就是那些由编译器在需要的时候分配,在不需要的时候自动清楚的变量的存储区。里面的变量通常是局部变量...
2010-03-09T14:48:00Z
2010-03-09T14:48:00Z
Bigcoder
https://www.cnblogs.com/csyisong/
【摘要】C++中堆和栈的区别,自由存储区、全局/静态存储区和常量存储区 文章来自一个论坛里的回帖,哪个论坛记不得了! 在C++中,内存分成5个区,他们分别是堆、栈、自由存储区、全局/静态存储区和常量存储区。 栈,就是那些由编译器在需要的时候分配,在不需要的时候自动清楚的变量的存储区。里面的变量通常是局部变量... <a href="https://www.cnblogs.com/csyisong/archive/2010/03/09/1682057.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/csyisong/archive/2010/01/10/1643519.html
cudaMallocPitch()数组的使用 - Bigcoder
名称 cudaMallocPitch – 向GPU分配存储器概要 cudaError_t cudaMallocPitch( void** devPtr,size_t* pitch,size_t widthInBytes,size_t height )说明 向设备分配至少widthInBytes*height字节的线性存储器,并以*devPtr的形式返回指向所分配存储器的指针。该函数可以...
2010-01-10T07:29:00Z
2010-01-10T07:29:00Z
Bigcoder
https://www.cnblogs.com/csyisong/
【摘要】名称 cudaMallocPitch – 向GPU分配存储器概要 cudaError_t cudaMallocPitch( void** devPtr,size_t* pitch,size_t widthInBytes,size_t height )说明 向设备分配至少widthInBytes*height字节的线性存储器,并以*devPtr的形式返回指向所分配存储器的指针。该函数可以... <a href="https://www.cnblogs.com/csyisong/archive/2010/01/10/1643519.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/csyisong/archive/2010/01/09/1643105.html
空指针解惑 - Bigcoder
空指针的简单描述:它 “与任何对象或函数的指针值都不相等”。也就是说, 取地址操作符 & 永远也不能得到空指针, 同样对 malloc() 的成功调用也不会返回空指针, 如果失败, malloc() 的确返回空指针, 这是空指针的典型用法:表示 “未分配”或者 “尚未指向任何地方”的指针。===============...
2010-01-09T11:50:00Z
2010-01-09T11:50:00Z
Bigcoder
https://www.cnblogs.com/csyisong/
【摘要】空指针的简单描述:它 “与任何对象或函数的指针值都不相等”。也就是说, 取地址操作符 & 永远也不能得到空指针, 同样对 malloc() 的成功调用也不会返回空指针, 如果失败, malloc() 的确返回空指针, 这是空指针的典型用法:表示 “未分配”或者 “尚未指向任何地方”的指针。===============... <a href="https://www.cnblogs.com/csyisong/archive/2010/01/09/1643105.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/csyisong/archive/2009/12/28/1634089.html
关于gluLookAt的构造方法 - Bigcoder
It's pretty simple to build your own look-at matrix.First, calculate forward, right, and up vectors. The forward vector should be a unit vector pointing in the direction that your camera is looking. T...
2009-12-28T06:25:00Z
2009-12-28T06:25:00Z
Bigcoder
https://www.cnblogs.com/csyisong/
【摘要】It's pretty simple to build your own look-at matrix.First, calculate forward, right, and up vectors. The forward vector should be a unit vector pointing in the direction that your camera is looking. T... <a href="https://www.cnblogs.com/csyisong/archive/2009/12/28/1634089.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/csyisong/archive/2009/12/25/1632342.html
C++ using namespace std 详解 - Bigcoder
所谓namespace,是指标识符的各种可见范围。C++标准程序库中的所有标识符都被定义于一个名为std的namespace中。一、<iostream>与<iostream.h>的区别<iostream>和<iostream.h>是不一样,前者没有后缀,实际上,在你的编译器include文件夹里面可以看到,二者是两个文件,打开文件就会发现,里面的代码...
2009-12-25T11:29:00Z
2009-12-25T11:29:00Z
Bigcoder
https://www.cnblogs.com/csyisong/
【摘要】所谓namespace,是指标识符的各种可见范围。C++标准程序库中的所有标识符都被定义于一个名为std的namespace中。一、<iostream>与<iostream.h>的区别<iostream>和<iostream.h>是不一样,前者没有后缀,实际上,在你的编译器include文件夹里面可以看到,二者是两个文件,打开文件就会发现,里面的代码... <a href="https://www.cnblogs.com/csyisong/archive/2009/12/25/1632342.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/csyisong/archive/2009/11/02/1594799.html
光泽纹理—GLOSS MAP - Bigcoder
以水为例子来解释下GLOSS MAP的含义与用法。 GLOSS MAP提出背景——它是针对这一具体问题提出的:当视线看到水表面时,希望在水表面能看到一种很好的反射加亮效果,而在陆地上却没有这种效果。解决这个问题的方法就可以用光泽贴图。 GLOSS MAP定义——对原纹理图制作一个单通道(即灰度)版本,对表示水的区域赋值1,而对其他位置赋值0,这样...
2009-11-02T13:04:00Z
2009-11-02T13:04:00Z
Bigcoder
https://www.cnblogs.com/csyisong/
【摘要】以水为例子来解释下GLOSS MAP的含义与用法。 GLOSS MAP提出背景——它是针对这一具体问题提出的:当视线看到水表面时,希望在水表面能看到一种很好的反射加亮效果,而在陆地上却没有这种效果。解决这个问题的方法就可以用光泽贴图。 GLOSS MAP定义——对原纹理图制作一个单通道(即灰度)版本,对表示水的区域赋值1,而对其他位置赋值0,这样... <a href="https://www.cnblogs.com/csyisong/archive/2009/11/02/1594799.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/csyisong/archive/2009/09/22/1571628.html
几种光照的术语解释 - Bigcoder
经常在不同的书与文献中看到3D 模型光照的种类,有以下几种说法:在D3D中支持三种光源,分别是泛光灯,聚光灯和平行光,OpenGL中总体分为方向性光源与位置性光源与聚光灯,聚光灯是在方向性光源上做了一些限制得到的光源。下面我就分别解释并做个对比:泛光灯——它是一种可以向四面八方均匀照射的点光源,它的照射范围可以任---意调整,在场景中表现为一个正八面体的图标。泛光灯是在效果...
2009-09-22T08:42:00Z
2009-09-22T08:42:00Z
Bigcoder
https://www.cnblogs.com/csyisong/
【摘要】经常在不同的书与文献中看到3D 模型光照的种类,有以下几种说法:在D3D中支持三种光源,分别是泛光灯,聚光灯和平行光,OpenGL中总体分为方向性光源与位置性光源与聚光灯,聚光灯是在方向性光源上做了一些限制得到的光源。下面我就分别解释并做个对比:泛光灯——它是一种可以向四面八方均匀照射的点光源,它的照射范围可以任---意调整,在场景中表现为一个正八面体的图标。泛光灯是在效果... <a href="https://www.cnblogs.com/csyisong/archive/2009/09/22/1571628.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/csyisong/archive/2009/09/02/1558465.html
3D MAX导出插件编写II - Bigcoder
在3D MAX导出插件编写I中已经具有了一个插件程序的基本框架,但这还是远远不够的,接下来,我们对I中的程序来补充肌肉、注入血液。在正式写插件之前,也必须要弄清楚一些概念,比如说Node,Object,Mesh,Face,以及他们之间的关系,还有就是3D MAX场景的组织方式,关于这些内容我会专门安排一篇文章来进行归纳总结,请阅读:3D MAX中的重要概念及场景组织方式在写程序之前,有一点必须弄明...
2009-09-02T12:45:00Z
2009-09-02T12:45:00Z
Bigcoder
https://www.cnblogs.com/csyisong/
【摘要】在3D MAX导出插件编写I中已经具有了一个插件程序的基本框架,但这还是远远不够的,接下来,我们对I中的程序来补充肌肉、注入血液。在正式写插件之前,也必须要弄清楚一些概念,比如说Node,Object,Mesh,Face,以及他们之间的关系,还有就是3D MAX场景的组织方式,关于这些内容我会专门安排一篇文章来进行归纳总结,请阅读:3D MAX中的重要概念及场景组织方式在写程序之前,有一点必须弄明... <a href="https://www.cnblogs.com/csyisong/archive/2009/09/02/1558465.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/csyisong/archive/2009/09/01/1558051.html
3D MAX导出插件编写I - Bigcoder
想想研究3D MAX 的SDK已经有了不短的时间,真正算起来也有两个月了吧,但是讲到收获,确实不大。作为一个3D MAX二次开发的学习者,我首先学习了导出插件的编写,网上有很多参考资料,写的都差不多,可是都是写到关键的地方或者说比较模糊的地方就说不清楚了,今天我就结合自己所做的工作来讲讲3D MAX...
2009-09-01T14:45:00Z
2009-09-01T14:45:00Z
Bigcoder
https://www.cnblogs.com/csyisong/
【摘要】想想研究3D MAX 的SDK已经有了不短的时间,真正算起来也有两个月了吧,但是讲到收获,确实不大。作为一个3D MAX二次开发的学习者,我首先学习了导出插件的编写,网上有很多参考资料,写的都差不多,可是都是写到关键的地方或者说比较模糊的地方就说不清楚了,今天我就结合自己所做的工作来讲讲3D MAX... <a href="https://www.cnblogs.com/csyisong/archive/2009/09/01/1558051.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/csyisong/archive/2009/02/13/1389804.html
两种加载BMP纹理图像的方法 - Bigcoder
在NeHe上,通过BMP文件来加载纹理,使用的是glaux.h函数库中的auxDIBImageLoad(Filename)函数来解决的,使用起来比较方便,可是,glaux.h这个函数库作为OpenGL平台发展的一个中间过渡产品,存在这不够稳定及功能不够完整的缺点,所以一般不使用这个函数库,而选择glut.h,以下是分别应用这两种函数库来实现纹理图像加载的实例: 1. 使用glaux.h函数库实现主...
2009-02-13T03:05:00Z
2009-02-13T03:05:00Z
Bigcoder
https://www.cnblogs.com/csyisong/
【摘要】在NeHe上,通过BMP文件来加载纹理,使用的是glaux.h函数库中的auxDIBImageLoad(Filename)函数来解决的,使用起来比较方便,可是,glaux.h这个函数库作为OpenGL平台发展的一个中间过渡产品,存在这不够稳定及功能不够完整的缺点,所以一般不使用这个函数库,而选择glut.h,以下是分别应用这两种函数库来实现纹理图像加载的实例: 1. 使用glaux.h函数库实现主... <a href="https://www.cnblogs.com/csyisong/archive/2009/02/13/1389804.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/csyisong/archive/2009/01/10/1373083.html
const用法的解惑 - Bigcoder
虽然看过C++方面不少的资料,但我现在仍然是一个初学者,编过C++的一些程序,但不多。const修饰词做为C++一个重要的概念,务必要弄清楚才行,看到网上一个C++学习者的博客上归纳的很不错,很精炼。以下是参考的链结:htmlhttp://www.cppblog.com/seuauto/archive/2008/09/04/60941.htmlconst是C++的关键字之一,与其他的关键字相比,C...
2009-01-09T16:28:00Z
2009-01-09T16:28:00Z
Bigcoder
https://www.cnblogs.com/csyisong/
【摘要】虽然看过C++方面不少的资料,但我现在仍然是一个初学者,编过C++的一些程序,但不多。const修饰词做为C++一个重要的概念,务必要弄清楚才行,看到网上一个C++学习者的博客上归纳的很不错,很精炼。以下是参考的链结:htmlhttp://www.cppblog.com/seuauto/archive/2008/09/04/60941.htmlconst是C++的关键字之一,与其他的关键字相比,C... <a href="https://www.cnblogs.com/csyisong/archive/2009/01/10/1373083.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/csyisong/archive/2009/01/09/1372382.html
typedef用法总结之续 - Bigcoder
刚刚看了一篇也是关于typedef用法的文章,跟先前看的那篇文章内容大同小异,不过有一处让我收获不小,就是在上篇最后那个案例我不理解的地方,这篇文章给了一个很好的答案。以下是文章的部分内容 :陷阱一: 记住,typedef是定义了一种类型的新别名,不同于宏,它不是简单的字符串替换。比如: 先定义: typedefchar*PSTR; 然后: intmystrcmp(constPSTR,constP...
2009-01-09T02:55:00Z
2009-01-09T02:55:00Z
Bigcoder
https://www.cnblogs.com/csyisong/
【摘要】刚刚看了一篇也是关于typedef用法的文章,跟先前看的那篇文章内容大同小异,不过有一处让我收获不小,就是在上篇最后那个案例我不理解的地方,这篇文章给了一个很好的答案。以下是文章的部分内容 :陷阱一: 记住,typedef是定义了一种类型的新别名,不同于宏,它不是简单的字符串替换。比如: 先定义: typedefchar*PSTR; 然后: intmystrcmp(constPSTR,constP... <a href="https://www.cnblogs.com/csyisong/archive/2009/01/09/1372382.html" target="_blank">阅读全文</a>