- 博客(11)
- 收藏
- 关注
原创 mutable 修饰的变量
<br />mutable 可以用来指出,即使结构或者类变量为const,其某个成员也可以被修改 <br />在c++的类中, 如果一个函数被const 修饰,那么它将无法修改其成员变量的,<br />但是如果这个成员变量是被mutable修饰的话,则可以修改。 例如 <br />struct data <br />{ <br /> char name[30]; <br /> mutable int accesses; .... <br />};
2010-08-02 14:49:00
595
转载 #pragma使用
<br />#pragma 预处理指令详解 <br /> 在所有的预处理指令中,#Pragma 指令可能是最复杂的了,它的作用是设定编译器的状态或者是指示编译器完成一些特定的动作。#pragma指令对每个编译器给出了一个方法,在保持与C和C++语言完全兼容的情况下,给出主机或操作系统专有的特征。依据定义,编译指示是机器或操作系统专有的,且对于每个编译器都是不同的。 <br /> 其格式一般为: #Pragma Para <br /> 其中Para 为参数,下面来看一些常用的参数。 <br /> (1
2010-07-21 16:45:00
292
原创 不进行比较如何确定两个数的大小
<br />两个数a和b进行比较,无非a大或者b大,采用a+b 和 |a-b| 就可得到2a或者2b,然后除2。所以:<br />max:a+b+abs(a-b)<br />min:a+b-abs(a-b)<br /> <br />
2010-07-21 16:13:00
590
转载 itoa与sprintf实现类型转换
<br />itoa函数及atoi函数,c语言提供了几个标准库函数,可以将任意类型(整型、长整型、浮点型等)的数字转换为字符<br />串。以下是用itoa()函数将整数转 换为字符串的一个例子:<br /># include <stdio.h><br /># include <stdlib.h><br />void main (void)<br />{<br />int num = 100;<br />char str[25];<br />itoa(num, str, 10);<br />printf("
2010-07-17 09:57:00
2133
原创 如何通过进程ID获取进程名
含头文件: #include "tlhelp32.h" CreateToolhelp32Snapshot函数为指定的进程、进程使用的堆[HEAP]、模块[MODULE]、线程[THREAD])建立一个快照[snapshot]。 示例: CString strName = "***"; HANDLE hProcessSnap=NULL; PROCESSENTRY32 pe32={0}; hProcessSnap=CreateToolhelp32Snap
2010-07-15 17:49:00
3301
转载 const用法小结
<br /> <br /><br /><br />前两天看代码的时候,发现很奇怪的const用法,于是在网上搜了一下,原来有这么多用法,不敢独享,拿上来和与我一样菜的小生们学习~<br />1. const常量,如const int max = 100; <br />优点:const常量有数据类型,而宏常量没有数据类型。编译器可以对前者进行类型安全检查,而对后者只进行字符替换,没有类型安全检查,并且在字符替换时可能会产生意料不到的错误(边际效应)<br />2. const 修饰类的数据成员。如:<br
2010-07-15 17:28:00
297
原创 类的static成员
<br />通常,非 static 数据成员存在于类类型的每个对象中。不像普通的数据成员,static 数据成员独立于该类的任意对象而存在;每个 static 数据成员是与类关联的对象,并不与该类的对象相关联。<br />正如类可以定义共享的 static 数据成员一样,类也可以定义 static 成员函数。static 成员函数没有 this 形参,它可以直接访问所属类的 static 成员,但不能直接使用非 static 成员。<br />使用 static 成员而不是全局对象有三个优点。<br />T
2010-07-15 16:49:00
383
转载 一种算法思想:关于产生m个n范围内的不重复随机数(m<=n)
<br />int a[100]={0};<br />int i, m;<br />for(i=1; i<=99; ++i)<br />{<br /> while(a[m=rand()%100]);<br /> a[m] = i;<br />}<br />这段代码是随机产生位置,它预先将整个数组初始化为0,然后随机产生其中一个位置,如果该元素值为0,表示这个位置还没有被使用过,就把i赋予它;否则,就重新随机产生另一个位置,直到整个数组被填满。这个方法,越到后面,遇到已使用过的元素
2010-07-09 14:41:00
942
原创 0629动态内存分配相关
<br />new表达式相关<br /> new 表达式的操作序列如下从空闲存储区分配对象然后用括号内的值初始化该对象<br />为从空闲存储区分配对象new 表达式调用库操作符new() 前面的new 表达式与下列代码<br />序列大体上等价:<br />int ival = 0; // 创建一个用 0 初始化的int 对象<br />int *pi = &ival; // 现在指针指向这个对象<br />当然不同的是pi 指向的对象是由库操作符new()分配的位于程序的自由存储区中<br />
2010-06-29 17:41:00
332
转载 【转】extern详细用法
extern关键字的作用是声明变量和函数为外部链接,即该变量或函数名在其它文件中可见。用其声明的变量或函数应该在别的文件或同一文件的其它地方定义。例如语句:extern int a; 仅仅是一个变量的声明,其并不是在定义变量a,并未为a分配内存空间。变量a在所有模块中作为一种全局变量只能被定义一次,否则会出现连接错误。 通常,在模块的头文件中对本模块提供给其它模块引用的函数和全局变量以关键字extern声明。例如,如果模块B欲引用该模块A中定义的全局变量和函数时只需包含模块A的头文件即可。这样,
2010-06-23 11:27:00
414
转载 【转】关于static和extern的用法
一些基本概念:1. 编译单元(模块): 在IDE开发工具大行其道的今天,对于编译的一些概念很多人已经不再清楚了,很多程序员最怕的就是处理连接错误(LINK ERROR), 因为它不像编译错误那样可以给出你程序错误的具体位置,你常常对这种错误感到懊恼,但是如果你经常使用gcc,makefile等工具在linux或者嵌 入式下做开发工作的话,那么你可能非常的理解编译与连接的区别!当在VC这样的开发工具上编写完代码,点击编译按钮准备生成exe文件时,VC其实做了两 步工作,第一步,将每个.cpp(.c)和相
2010-06-23 11:23:00
445
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人