- 博客(76)
- 资源 (3)
- 收藏
- 关注
转载 C/C++时间函数使用方法
/C++对时间的操作也有许多值得大家注意的地方。最近,在技术群中有很多网友也多次问到过C++语言中对时间的操作、获取和显示等等的问题。下面,在这篇文章中,笔者将主要介绍在C/C++中时间和日期的使用方法. 通过学习许多C/C++库,你可以有很多操作、使用时间的方法。但在这之前你需要了解一些“时间”和“日期”的概念,主要有以下几个: Coordi
2011-11-21 21:59:05
981
原创 随机函数rand()[c++]
一、C++中不能使用random()函数 random函数不是ANSI C标准,不能在gcc,vc等编译器下编译通过。 可改用C++下的rand函数来实现。 1、C++标准函数库提供一随机数生成器rand,返回0-RAND_MAX之间均匀分布的伪随机整数。 RAND_MAX必须至少为32767。rand()函数不接受参数,默认以1为种子(即起始值)。 随机数生成器总是以
2011-11-08 12:29:00
990
原创 C++内存分配方式详解——堆、栈、自由存储区、全局/静态存储区和常量存储区
栈,就是那些由编译器在需要的时候分配,在不需要的时候自动清除的变量的存储区。里面的变量通常是局部变量、函数参数等。在一个进程中,位于用户虚拟地址空间顶部的是用户栈,编译器用它来实现函数的调用。和堆一样,用户栈在程序执行期间可以动态地扩展和收缩。堆,就是那些由new分配的内存块,他们的释放编译器不去管,由我们的应用程序去控制,一般一个new就要对应一个delete。如果程序员没有释放掉,那么在程
2011-11-07 22:15:06
995
原创 C++ link详解
有些人写C/C++(以下假定为C++)程序,对unresolved external link或者duplicated external simbol的错误信息不知所措(因为这样的错误信息不能定位到某一行)。或者对语言的一些部分不知道为什么要(或者不要)这样那样设计。了解本文之后,或许会有一些答案。 首先看看我们是如何写一个程序的。如果你在使用某种IDE(Visual Studio,El
2011-11-07 20:45:37
1660
原创 C++内联函数(Inline)
(1)什么是内联函数?内联函数是指那些定义在类体内的成员函数,即该函数的函数体放在类体内。(2)为什么要引入内联函数?当然,引入内联函数的主要目的是:解决程序中函数调用的效率问题(时间和空间的开销)。另外,前面我们讲到了宏,里面有这么一个例子:#define ABS(x) ((x)>0? (x):-(x))当++i出现时,宏就会歪曲我们的意思,换句话说就是:宏的定义很容易产
2011-11-07 20:19:04
1120
原创 c_str()的用法
函数声明:const char *c_str(); c_str()函数返回一个指向c风格字符串的常量指针(const char*),不能直接直接赋值给char*,可以通过strcpy()函数进行拷贝string s = "1234";char* c = new char[s.length()+1]; //必须要分配内存才行,光声明一个指针是不会分配内存空间的strcpy(c,s.c
2011-11-06 11:46:07
1149
原创 itoa函数及atoi函数
C语言提供了几个标准库函数,可以将任意类型(整型、长整型、浮点型等)的数字转换为字符串。以下是用itoa()函数将整数转 换为字符串的一个例子:# include # include void main (void){int num = 100;char str[25];itoa(num, str, 10);printf("The number 'num'
2011-11-06 09:34:22
933
原创 c/c++中const用法总结
const类型定义:指明变量或对象的值是不能被更新,引入目的是为了取代预编译指令 **************常量必须被初始化*************************cons的作用 (1)可以定义const常量 例如: const int Max=100; int Array[Max];
2011-11-05 22:18:09
863
原创 预编译
预编译又称为预处理,是做些代码文本的替换工作 处理#开头的指令,比如拷贝#include包含的文件代码,#define宏定义的替换,条件编译等 就是为编译做的预备工作的阶段 主要处理#开始的预编译指令 预编译指令指示了在程序正式编译前就由编译器进行的操作,可以放在程序中的任何位置。常见的预编译指令有: (1)#include 指令
2011-11-05 21:52:18
847
转载 C++中的文件输入/输出
简介本教程将以C++最基本的文件I/O(输出/输出)开始。此后,我将从更深入的方面,为你展示一些技巧,并分析给出一些有用的函数。你需要对C++有一个较好的理解,否则这个教程于你而言将是陌生而毫无用处。 你的第一个程序 首先我将给出一段代码,接着再逐行进行解释。我们的第一个程序将建立一个文件,并写入一些字符: #include void main() //程
2011-10-26 16:18:16
889
原创 指针函数与函数指针的区别
1、指针函数是指带指针的函数,即本质是一个函数。函数返回类型是某一类型的指针 类型标识符 *函数名(参数表) int *f(x,y); 首先它是一个函数,只不过这个函数的返回值是一个地址值。函数返回值必须用同类型的指针变量来接受,也就是说,指针函数一定有函数返回值,而且,在主调函数中,函数返回值必须赋给同类型的指针变量。表示:float *fun()
2011-10-25 09:25:54
812
原创 函数名与函数指针
一 通常的函数调用 一个通常的函数调用的例子://自行包含头文件void MyFun(int x); //此处的申明也可写成:void MyFun( int );int main(int argc, char* argv[]){ MyFun(10); //这里是调用MyFun(10);函数 return 0;}voi
2011-10-25 09:23:56
822
原创 new动态创建二维数组的方法
1.A (*ga)[n] = new A[m][n];...delete []ga;缺点:n必须是已知优点:调用直观,连续储存,程序简洁(经过测试,析构函数能正确调用)2. A** ga = new A*[m];for(int i = 0; i ga[i] = new A[n];...for(int i = 0; i delete []ga[i];
2011-10-20 14:12:36
925
原创 编程之美-饮料供应问题
动态规划和备忘录方法的不同点:动态规划是从下到上把所有的情况都计算出来,后面的表达式会用到前面的结果,这个避免重复计算,而备忘录方法则是用递归的方法,但是有点不同的是最开始对所有情况进行标记,如:-1,然后每次递归时都要判断这个值是否计算过,如果没有则进行计算,如已经计算过则直接返回结果即可。采用这个递归只会计算所需要的值,对于有些情况很多值是从来都用不到的,所以不用计算,这个比动态规划要效率高些
2011-10-19 18:23:02
1027
原创 编程之美-饮料供应问题(备忘录方法)
备忘录方法——动态规划法的变形 e.g. 求LCS的问题。当xi=yj时,求C[i,j]只需知道C[i-1,j-1]而无需用到C[i,0]~C[i,j-1]及C[i-1,j]~C[i-1,n]。∴ 当只需求出一个LCS时,可能有一些C[p,q]在整个求解过程中都不会用到。 一般地,当某个问题可以用动态规划法求解,但二维数组中有相当一部分元素在整个计算中都不会被用到
2011-10-19 18:13:51
1103
编程之美-饮料供应问
备忘录方法——动态规划法的变形 e.g. 求LCS的问题。当xi=yj时,求C[i,j]只需知道C[i-1,j-1]而无需用到C[i,0]~C[i,j-1]及C[i-1,j]~C[i-1,n]。∴ 当只需求出一个LCS时,可能有一些C[p,q]在整个求解过程中都不会用到。 一般地,当某个问题可以用动态规划法求解,但二维数组中有相当一部分元素在整个计算中都不会被
2011-10-19 17:21:57
496
原创 指针常量和常量指针
1. 定义:常量指针是指--指向常量的指针,顾名思义,就是指针指向的是常量,即,它不能指向变量,它指向的内容不能被改变,不能通过指针来修改它指向的内容,但是指针自身不是常量,它自身的值可以改变,从而指向另一个常量。指针常量是指--指针本身是常量。它指向的地
2011-10-18 20:38:15
1205
原创 C++中指针和引用的区别
从概念上讲。指针从本质上讲就是存放变量地址的一个变量,在逻辑上是独立的,它可以被改变,包括其所指向的地址的改变和其指向的地址中所存放的数据的改变。而引用是一个别名,它在逻辑上不是独立的,它的存在具有依附性,所以引用必须在一开始就被初始化,而且其引用的对象在其整个生命周期中是不
2011-10-18 20:04:39
778
原创 C++拷贝构造函数(深拷贝,浅拷贝)
对于普通类型的对象来说,它们之间的复制是很简单的,例如:int a=88;int b=a; 而类对象与普通对象不同,类对象内部结构一般较为复杂,存在各种成员变量。下面看一个类对象拷贝的简单例子。#include iostream>using n
2011-10-18 17:06:28
945
原创 编程之美--买书问题(递归算法)
斐波那契数的计算公式是F(n)=F(n-1)+F(n-2),F(0)=F(1)=1任何递推的数学公式都可以直接翻译为递归的算法,于是递归的 斐波那契数计算方法是这样的: int fib(int n){
2011-10-17 20:57:31
410
原创 编程之美--买书问题(递归算法)
斐波那契数的计算公式是F(n)=F(n-1)+F(n-2),F(0)=F(1)=1任何递推的数学公式都可以直接翻译为递归的算法,于是递归的 斐波那契数计算方法是这样的:view sourceprint?int
2011-10-17 20:53:23
478
转载 游戏类求职(策划、运营、开发),你该这样做
游戏策划新手指南重要提示:新手的问题,大部分在网上都可以通过搜索引擎找到,建议用www.google.com或www.baidu.com搜索。下面根据我的看法和网上找到的有代表性的贴子,按创意篇、学习篇、应聘篇和建议篇归类汇总,仅供懒人新手查看。一、创意篇很多新人
2011-09-20 18:35:32
931
游戏类求职(策划、运营、开发),你该这样做
游戏策划新手指南重要提示:新手的问题,大部分在网上都可以通过搜索引擎找到,建议用www.google.com或www.baidu.com搜索。下面根据我的看法和网上找到的有代表性的贴子,按创意篇、学习篇、应聘篇和建议篇归类汇总,仅供懒人新手查看。一、创意篇很多新人
2011-09-20 18:30:52
557
原创 Ogre粒子编辑器教程——翻译
在这个教程中我们将创建一个简单的粒子系统效果。通过创建这个基本的粒子系统我们将熟悉很多编辑器的界面,希望我们将知道这个编辑器和Ogre的粒子系统能做什么。在本教程中我们将创建一个这样的粒子系统,一个简单的喷洒效果提示:本教程假定你没有修改编辑器的任何数据文件。 好了
2011-09-08 11:20:28
679
原创 OGRE中的四元数与旋转
想象一个物体在3D空间中移动的过程,该物体必然会涉及到旋转。例如一个怪物,他的运动方向会改变,要改变其方向只需要对其进行旋转即可。 旋转的方式大致分为三种:Euler旋转,矩阵旋转,以及四元数旋转。 这里稍微记录下我目前对于四元数旋转的理解。对于四
2011-08-26 16:15:33
445
原创 通过COM组件在Web上实现Kinect骨骼追踪、声控截屏保存的功能
前些天在淘宝上订购了Kinect,刚刚到货,对于这个新鲜的玩意儿,自己赶紧卸开包裹,插上PC机,先前已经装好了Kinect SDK(官方下载地址:http://research.microsoft.com/en-us/um/redmond/projects/kinectsdk/d
2011-08-25 12:26:35
510
原创 Ogre骨骼动画融合
很多商业引擎都支持骨骼动画融合这个功能。融合可以让你的动画自然过渡到下一个动画,你可以精确控制下一个动画播放时间等信息。Ogre其实也支持动画的融合,只是Ogre并没有给出代码级的支持。PS:Ogre很有意思,他天然支持很多东西,但是都没有实现出来,需要你来实现。
2011-08-24 15:05:37
383
原创 Ogre:Animation(Ogre中的动画)
在Ogre中Animation是一块非常重要的部分,但是笔者在学习Ogre的动画时遗憾的发现关于Ogre中动画的资料非常的少,Ogre的sample中只有最简单的导入一个骨骼动画的例子,在网上也很少有人谈及,Ogre Wiki中的教程也是边边角角,不知这么重要的部分为什么不做一个
2011-08-24 14:41:25
569
原创 ogre轨迹动画
转之:http://www.cppblog.com/yuanyajie/archive/2007/03/02/19132.html轨迹动画(Animation Track),是 OGRE 所支持的几种动画模式(包括骨骼动画)中的一种。通过让节点(node)沿着一条预设了关
2011-08-24 14:40:30
409
原创 OGER手札-33 Ogre命令行工具包使用说明
Ogre命令行工具包使用说明 本文档由 自由骑士笃志 翻译整理,版权属于OgreTeam。转载请包含本行信息。 这个工具包包含了一些对Ogre资源文件进行操作的预处理命令行工具。它包括OgreXMLConveter, OgreM
2011-08-24 10:38:10
333
原创 Kinect for Windows SDK开发初体验(一)环境配置
万众期待的Kinect for Windows SDK终于在广大开发者的千呼万唤中发布了beta版,作为历史上销售最快的消费电子产品,早就有无数人想将其用于其他领域了。微软虽然在硬件接口上制造了一点小障碍,但并没有对Kinect的输出做任何加密。于是,基于Kinect的各种应用层
2011-07-21 10:23:29
639
原创 Ogre的BSP地图和简单机器人动作控制实例
//本代码 BSP地图 简单 机器人动作控制#include //OGRE主文件#include //输入控制文件#include "ExampleFrameListener.h" //监听类using namespace Ogre; //使用 命名空间Scene
2011-07-18 13:05:04
600
原创 OGRE资源的四种状态
资源被激活,资源数据存在于内存中,可以被游戏程序直接调用了。(如果游戏程序调用未载入的资源,并且资源管理器的内存配额没有超出,则OGRE会自动帮你载入这些资源。) (平时我们调用“ResourceGroupManager::getSingleton().loadResour
2011-07-18 09:50:18
489
原创 ogre材质脚本属性
顶层Material属性属性名 值的格式 描述lod_distances [ ... ] LOD的距离列表receive_shadows |
2011-07-17 14:47:01
373
原创 八叉树场景管理器
上面是我绘制的一张图。 关于八叉树场景管理器主要需要关注两个类,其一是松散八叉树的数据结构Ogre::Octree,其二是八叉树场景管理器Ogre::OctreeSceneManager。 下面摘录图片中的文字:松散八叉树的数据结构。属性:其中mBox
2011-07-15 11:21:12
512
原创 在 WIndows 上安裝 Kinect(含 MMD 使用 Kinect 簡易教學)
前一篇文章有大概介紹過微軟的 Kinect 這個新東西了~它的深度攝影機、以及他的衍伸應用,在最近也算是已經被發揚光大,應用非常多了。而這一篇呢,就來簡單講一下,要怎樣才能把 Kinect 裝到 PC 上,在 Windows 作業系統下使用吧~基本上,Kinect 的訊號接頭雖然
2011-07-12 21:54:03
973
1
原创 OGRE基础教程2
一个更加丰富的世界刚才创建的程序中空荡荡的,除了数值和Logo什么也没有。现在我们添加一些代码让这个世界丰富起来。在刚才的代码中找到TutorialApplication::createScene成员函数,今天后面的代码都是添加在这个函数中的。为了能看清楚我们将要做的事情,首先要设置场景的光线。mSceneMgr->setAmbientLight(ColourValue(1,1,1))
2011-06-24 19:04:00
418
原创 OGRE基础教程1
简介:本教程基于Ogre Wiki上的Basic Tutorial系列,并依据笔者使用的vs2005+sp1+OgreSDK1.4.3开发环境简化整理而来,其中穿插着笔者自己的理解。这是教程的第一部分,也是我的学习笔记。正文:凡是翻译过几篇技术类文章的人都深知从头至尾忠实重现作者的原意是一件多么令人头疼的事情。当我从诸多曾经许诺要翻译的文章中爬出来的时候,我决定这次不做那样
2011-06-24 18:23:00
431
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人