摘要:
文件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",避免循环嵌套. 阅读全文
摘要:
(转载)windows下创建进程的步骤: 进程(Process)是具有一定独立功能的程序关于某个数据集合上的一次运行活动,是系统进行资源分配和调度的一个独立单位。程序只是一组指令的有序集合,它本身没有任何运行的含义,只是一个静态实体。而进程则不同,它是程序在某个数据集上的执行,是一个动态实体。它因创... 阅读全文
摘要:
单链表的逆置的实现:(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... 阅读全文
摘要:
如果函数返回值是一个对象,要考虑 return 语句的效率。例如 return String(s1 + s2); 这是临时对象的语法,表示“创建一个临时对象并返回它” 。不要以为它与“先创建一个局部对象 temp 并返回它的结果”是等价的,如 String temp(s1 + s2); return temp; 实质不然,上述代码将发生三件事。首先... 阅读全文
摘要:
格式:类型标识符 &函数名(形参列表及类型说明){ //函数体 }好处:在内存中不产生被返回值的副本;(注意:正是因为这点原因,所以返回一个局部变量的引用是不可取的。因为随着该局部变量生存期的结束,相应的引用也会失效,产生runtime error! 注意事项:(1)不能返回局部变量的引用。这条可以参照Effective C++[1]的Item 31。主要原因是局部变量会在函数返回后被销毁... 阅读全文
摘要:
看看下面的程序的输出: #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!"是一... 阅读全文
摘要:
之前也看过环境纹理的实现原理,可是理解总不是那么透彻,今天再次看了一遍,以作巩固。 环境纹理的实现方法有多种,其中典型的方法包括:立方体纹理、球型纹理、抛物线纹理。在这三种方法中,立方体纹理的效果最好。下面简单介绍如何使用立方体纹理。首先,准备六张在六个方向上的环境纹理图片,分别是在positive_x,negative_x,positive_y,negative_y,positive_z,ne... 阅读全文
摘要:
题记: 关于指针,推荐看一下csdn飞天御剑流的《再再论指针》,相信对C语言指针会有一个更为清晰全面的理解。 指针是C语言的精华,它是一柄“双刃剑”,用的好与坏就看使用者的功力了。下面就一道面试题,看一下指针与数组的区别。 char *p1, *p2;char ch[12];char **pp;p1 = ch;pp = &ch;p2 = *pp;问p1和p2是... 阅读全文
摘要:
C++中堆和栈的区别,自由存储区、全局/静态存储区和常量存储区 文章来自一个论坛里的回帖,哪个论坛记不得了! 在C++中,内存分成5个区,他们分别是堆、栈、自由存储区、全局/静态存储区和常量存储区。 栈,就是那些由编译器在需要的时候分配,在不需要的时候自动清楚的变量的存储区。里面的变量通常是局部变量... 阅读全文
摘要:
名称 cudaMallocPitch – 向GPU分配存储器概要 cudaError_t cudaMallocPitch( void** devPtr,size_t* pitch,size_t widthInBytes,size_t height )说明 向设备分配至少widthInBytes*height字节的线性存储器,并以*devPtr的形式返回指向所分配存储器的指针。该函数可以... 阅读全文