
C/C++语言
duola_rain
这个作者很懒,什么都没留下…
展开
-
const变量与宏的区别
const的用法有四种:参数、返回值、函数,?另一种没有想起来用const修饰变量将限定变量为只读,该变量值不允许被改变。下面是const用于定义数组大小的一个简单例子: const int ArraySize = 10; int array[ArraySize];//仅限于C++可以这样表示。 const变量必须初始化,这个一次性的初始化是设置其数值的唯原创 2012-08-04 11:59:00 · 3441 阅读 · 0 评论 -
c和c++深层次引用函数
C和C++函数的相互引用上次代码了碰到了这个问题,.c中调用.cpp中的函数,网上搜之,得此佳文。原文地址:http://blog.youkuaiyun.com/wfwd/archive/2006/05/30/763734.aspx==================================================================================转载 2013-02-28 15:40:24 · 418 阅读 · 0 评论 -
c/c++资源汇总
Visual C++视频技术方案宝典.pdf: http://www.t00y.com/file/17628500Windows 图形编程.pdf: http://www.t00y.com/file/17628502Windows程序设计 第2版 .pdf: http://www.t00y.com/file/17628503《游戏编程指南》.pdf: http://www.t00y.c原创 2013-03-14 08:59:50 · 1019 阅读 · 0 评论 -
进程和线程的区别
进程和线程都是由操作系统所体会的程序运行的基本单元,系统利用该基本单元实现系统对应用的并发性。进程和线程的区别在于:简而言之,一个程序至少有一个进程,一个进程至少有一个线程.线程的划分尺度小于进程,使得多线程程序的并发性高。另外,进程在执行过程中拥有独立的内存单元,而多个线程共享内存,从而极大地提高了程序的运行效率。线程在执行过程中与进程还是有区别的。每个独立的线程有一个程序运转载 2013-03-01 16:00:48 · 314 阅读 · 0 评论 -
操作符优先级
C语言操作符优先级 C语言操作符优先级优先级运算符含 义要求运算对象的个数结合方向1()[]->.圆括号下标运算符指向结构体成员运算符结构体成员运算符 自左至右2转载 2012-07-25 10:25:42 · 543 阅读 · 0 评论 -
C语言中access函数
头文件:io.h功 能: 确定文件或文件夹的访问权限。即,检查某个文件的存取方式,比如说是只读方式、只写方式等。如果指定的存取方式有效,则函数返回0,否则函数返回-1。用 法: int access(const char *filenpath, int mode); 或者int _access( const char *path, int mode );参数说明:filenpath原创 2013-04-27 14:47:08 · 1412 阅读 · 0 评论 -
浅谈volatile的作用
volatile的作用: 作为指令关键字,确保本条指令不会因编译器的优化而省略,且要求每次直接读值.简单地说就是防止编译器对代码进行优化.比如如下程序:XBYTE[2]=0x55;XBYTE[2]=0x56;XBYTE[2]=0x57;XBYTE[2]=0x58;对外部硬件而言,上述四条语句分别表示不同的操作,会产生四种不同的动作,但是编译器就不能像对待纯粹的程序那样对上述四条语句进行优化,只认为原创 2013-05-08 09:43:52 · 572 阅读 · 0 评论 -
strtok
strtok目录原型功能说明返回值使用cc++其他相关信息展开原型功能说明返回值使用cc++其他相关信息展开编辑本段原型char *strtok(char s[], const char *delim);编辑本段功能分解字符串为一组字符串。s为要分解的字符串,delim为分隔符字符串。例如:strt原创 2013-05-09 09:24:14 · 702 阅读 · 0 评论 -
int取值
今天在sqlserver里面创建表时用到了int型数据类型,长度只能为4,我就以为最大可以表示为9999,罪过啊。因为受char类型的影响,char的长度如果为4,则我只能输入'abcd','qwer'这么长,再长的会被截断。其实int中的4代表4个字节,1个字节是8个二进制串,于是实际上int型可以表示的最大整数就是0111 1111 1111 1111 1111 1111 11原创 2013-05-09 17:25:39 · 848 阅读 · 0 评论 -
不用友元,访问类的私有成员变量的方法
虽然没有现实意义,但对理解C++的对象模型是很有帮助的。 前几天,在论坛里看到一个帖子,内容是: (原帖见:http://community.youkuaiyun.com/Expert/topic/5014/5014384.xml?temp=.3018152) ======================================== class a转载 2013-12-30 10:59:41 · 631 阅读 · 0 评论 -
失落的C语言结构体封装艺术
1. 谁该阅读这篇文章本文是关于削减C语言程序内存占用空间的一项技术——为了减小内存大小而手工重新封装C结构体声明。你需要C语言的基本知识来读懂本文。如果你要为内存有限制的嵌入式系统、或者操作系统内核写代码,那么你需要懂这项技术。如果你在处理极大的应用程序数据集,以至于你的程序常常达到内存的界限时,这项技术是有帮助的。在任何你真的真的需要关注将高速缓存行未命中降到最低的应用程序里,转载 2014-02-14 09:00:59 · 879 阅读 · 0 评论 -
memcpy,strcpy
转自:http://www.cnblogs.com/stoneJin/archive/2011/09/16/2179248.html,但是原文程序有误!strcpy和memcpy都是标准C库函数,它们有下面的特点。strcpy提供了字符串的复制。即strcpy只用于字符串复制,并且它不仅复制字符串内容之外,还会复制字符串的结束符。已知strcpy函数的原型是:char* s转载 2014-09-03 17:35:05 · 702 阅读 · 0 评论 -
C语言宏
目录(?)[-]简单宏定义 带参数的宏 运算符 运算符 宏的通用属性 宏定义中圆括号 创建较长的宏 较长的宏中的逗号运算符宏定义中的do-while循环do 空操作的定义预定义宏 C语言中常用的宏 1. 简单宏定义简单的宏定义有如下格式:[#define指令(简单的宏)] #define 标识符替换列表替换列表是一系列的C语言转载 2014-12-10 15:14:17 · 708 阅读 · 0 评论 -
#!/bin/sh与#!/bin/bash的区别
Linux 中的 shell 有很多类型,其中最常用的几种是: Bourne shell (sh)、C shell (csh) 和 Korn shell (ksh), 各有优缺点。Bourne shell 是 UNIX 最初使用的 shell,并且在每种 UNIX 上都可以使用, 在 shell 编程方面相当优秀,但在处理与用户的交互方面做得不如其他几种shell。Linux 操作系统缺省的 sh转载 2015-07-20 17:09:53 · 1513 阅读 · 0 评论 -
C++静态成员函数和变量
在C++中,静态成员是属于整个类的而不是某个对象,静态成员变量只存储一份供所有对象共用。所以在所有对象中都可以共享它。使用静态成员变量实现多个对象之间的数据共享不会破坏隐藏的原则,保证了安全性还可以节省内存。静态成员的定义或声明要加个关键static。静态成员可以通过双冒号来使用即::。 在C++中类的静态成员变量和静态成员函数是个容易出错的地方,本文先通过几个例子来总结静转载 2016-05-27 14:18:58 · 326 阅读 · 0 评论 -
C++析构函数为什么要为虚函数
1.为什么基类的析构函数是虚函数? 在实现多态时,当用基类操作派生类,在析构时防止只析构基类而不析构派生类的状况发生。 下面转自网络:源地址 http://blog.sina.com.cn/s/blog_7c773cc50100y9hz.html a.第一段代码 #includeusing namespace std;class ClxB转载 2016-06-13 17:36:09 · 367 阅读 · 0 评论 -
linux open 函数O_DIRECT标志位使用说明
打开文件的时候如果使用O_DIRECT按照man命令说的就是直接进行文件IO,而系统不进行缓存,会影响文件读写速度,但可能对用户内存影响较小。这个标志位在使用的时候还是有些东西需要注意的,否则写文件时既没有报错,而内容也没有写入文件,会搞得人一头雾水。注意事项:1. 每次写入的数据块大小要是文件所在块设备 block size的整数倍。 可以通过如下命令查看当前文件系统转载 2016-06-16 10:18:33 · 979 阅读 · 0 评论 -
linux下c程序调用reboot函数实现直接重启
#include #include int reboot(int flag);------------------------------------1 #include 2 #include 3 int main()4 {5 /* 同步磁盘数据,将缓存数据回写到硬盘,以防数据丢失 */6 sync();7 return转载 2016-08-09 19:17:04 · 2214 阅读 · 0 评论 -
浮点数的存储格式
由一个程序开始[cpp] view plaincopyprint?#include using namespace std; int main(int argc, char* argv[]) { float a = 1.0f;//浮点数在内存中是以符号+指数+尾数保存的 cout int b = 0x3f800000; c转载 2013-03-05 11:14:03 · 2564 阅读 · 0 评论 -
void和void*
void的含义void即“无类型”,void *则为“无类型指针”,可以指向任何数据类型。void指针使用规范①void指针可以指向任意类型的数据,亦即可用任意数据类型的指针对void指针赋值。例如:int *pint;void *pvoid;pvoid = pint; /* 不过不能 pint = pvoid; */如果要将pvoid赋给其他类型指针,则需转载 2013-02-21 10:06:26 · 368 阅读 · 0 评论 -
简单题目不简单回答
1 const变量与宏的区别2. 程序的变量怎么存储的?3. 宏和枚举有什么区别,定义数组时使用枚举和使用宏的区别4. const变量是否可以做数组下标5. static的用法,static修饰类的方法时,是什么意思6. 设计模式熟不熟?写一个最简单的单例模式7. 如何用C实现面向对象8. 程序和进程的区别?一个进程可以执行多个程序的代码吗?9. 嵌入式开发特点原创 2012-08-04 11:40:10 · 563 阅读 · 0 评论 -
宏和枚举有什么区别,定义数组时使用枚举和使用宏的区别
经常需要为某些属性定义一组可选择的值。例如,文件打开的状态可能会有三种:输入、输出和追加。记录这些状态值的一种方法是使每种状态都与一个唯一的常数值相关联。我们可能会这样编写代码:const int input = 0;const int output = 1;const int append = 2;虽然这种方法也能奏效,但是它有个明显的缺点:没有指出这些值是相关联的。 枚转载 2012-08-04 13:47:28 · 1888 阅读 · 0 评论 -
程序的变量怎么存储的?
变量的属性:数据类型、存储类型、作用域、存储期。 1、数据类型:就是我们熟悉的int、char、long等,没什么说的; 2、存储类型:auto、static、register、extern四种; 3、作用域:是指程序中可以使用该变量的区域; 4、存储期:是指变量在内存中转载 2012-08-04 13:26:05 · 1002 阅读 · 0 评论 -
malloc特free
一、malloc()和free()的基本概念以及基本用法:1、函数原型及说明:void *malloc(long NumBytes):该函数分配了NumBytes个字节,并返回了指向这块内存的指针。如果分配失败,则返回一个空指针(NULL)。关于分配失败的原因,应该有多种,比如说空间不足就是一种。void free(void *FirstByte): 该函数是将之前用malloc分转载 2012-07-22 21:31:14 · 1119 阅读 · 0 评论 -
一个游戏程序员的学习资料
想起写这篇文章是在看侯杰先生的《深入浅出MFC》时, 突然觉得自己在大学这几年关于游戏编程方面还算是有些心得,因此写出这篇小文,介绍我眼中的游戏程序 员的书单与源代码参考。一则是作为自己今后两年学习目标的备忘录,二来没准对别人也有点参考价值。我的原则是只写自己研究过或准备研究的资料,所以内容无 疑会带上强烈的个人喜好色彩, 比如对网络,数据库等重要方面完全没有涉及。因为自己主要对三维图形引擎, 人转载 2012-08-07 11:47:03 · 477 阅读 · 0 评论 -
sizeof汇总
sizeof()功能:计算数据空间的字节数1.与strlen()比较 strlen()计算字符数组的字符数,以"\0"为结束判断,不计算为'\0'的数组元素。 而sizeof计算数据(包括数组、变量、类型、结构体等)所占内存空间,用字节数表示。2.指针与静态数组的sizeof操作 指针均可看为变量类型的一种。所有指针变量的sizeof 操作结果均为转载 2012-08-08 13:29:47 · 373 阅读 · 0 评论 -
void
void的含义void即“无类型”,void *则为“无类型指针”,可以指向任何数据类型。void指针使用规范①void指针可以指向任意类型的数据,亦即可用任意数据类型的指针对void指针赋值。例如:int *pint;void *pvoid;pvoid = pint; /* 不过不能 pint = pvoid; */如果要将pvoid赋给其他类型指针,则需转载 2012-07-25 09:59:07 · 489 阅读 · 0 评论 -
union
以前在学校学习C语言的时候一直搞不懂那个共用体union有什么用的。工作之后才发现它的一些妙用,现举例如下:1. 为了方便看懂代码。比如说想写一个3 * 3的矩阵,可以这样写:[ 注:下面用红色部分标记的地方是后来添加上去的,谢谢yrqing718的提醒!]struct Matrix{ union { struct转载 2012-07-25 09:48:30 · 436 阅读 · 0 评论 -
可变参数函数
什么是可变参数 我们在C语言编程中有时会遇到一些参数个数可变的函数,例如printf()函数,其函数原型为: int printf( const char* format, ...); 它除了有一个参数format固定以外,后面跟的参数的个数和类型是可变的(用三个点“…”做参数占位符),实际调用时可以有以下的形式: p转载 2012-08-15 15:55:23 · 375 阅读 · 0 评论 -
高低端判断
2010-07-22 18:32 305人阅读 评论(1)收藏 举报int i=1; char *p=(char *)&i; if(*p==1) printf("1"); else printf("2"); 大小端存储问题,如果小端方式中(i占至少两转载 2012-08-02 10:34:28 · 4292 阅读 · 0 评论 -
short /int/long长度
short 的最小表示范围和 int 一样,都是-32767 到 32767 。也就是 -(2^15 - 1)到(2^15 - 1)。其中,2^15表示 2 的 15 次方。类似地,2 的 20 次方记作2^20 ,以此类推。注意:C 语言中 2^15 并不表示 2 的 15 次方,为了书写方便,我们姑且这么表示。long 的最小取值范围是 -2147483647 到 2147483647 。转载 2012-09-11 19:12:48 · 2698 阅读 · 0 评论 -
内存对齐
内存对齐与ANSI C中struct型数据的内存布局 当在C中定义了一个结构类型时,它的大小是否等于各字段(field)大小之和?编译器将如何在内存中放置这些字段?ANSI C对结构体的内存布局有什么要求?而我们的程序又能否依赖这种布局?这些问题或许对不少朋友来说还有点模糊,那么本文就试着探究它们背后的秘密。首先,至少有一点可以肯定,那就是ANSI C保证结构体中各字段在内存中出转载 2012-10-08 11:08:08 · 349 阅读 · 0 评论 -
string类
[+]查找(find)substrfind_first_of1、const char *data();data()函数返回指向自己的第一个字符的指针. [cpp] view plaincopyprint?string str3="you are stupid!"; char* cc=(char*)str3.data();转载 2012-09-18 09:48:47 · 422 阅读 · 0 评论 -
static
1. static 变量 静态变量的类型说明符是static。静态变量当然是属于静态存储方式,但是属于静态存储方式的量不一定就是静态变量。例如外部变量虽属于静态存储方式,但不一定是静态变量,必须由 static加以定义后才能成为静态外部变量,或称静态全局变量。 2.静态局部变量 静态局部变量属于静态存储方式,它具有以下特点: (1)静态局部变量在函数内定义它的生存期为整转载 2012-10-08 10:56:12 · 394 阅读 · 0 评论 -
单链表倒置思想
对于单链表的逆置有两种方法可以实现:(1)利用辅助指针 基本思想:在遍历结点过程中,设置辅助指针,用于记录先前遍历的结点。这样依次编译的过程中只需修改其后继结点的next域即可。 实现代码:[cpp] view plaincopyprint?typedef int DataType; //类型定义 typedef str转载 2012-10-25 09:49:41 · 778 阅读 · 0 评论 -
VC调试
1.The source files...are both configured to produce.在对VC++6.0的项目空间的一个文件夹删除,改过名字再重新添加到项目中以后,本来好好的项目build不过去了,提示:The source files...are both configured to produce the output file,The project cannot b原创 2012-11-23 09:08:52 · 929 阅读 · 0 评论 -
友元
1,friend申明一个友元friend一般为一句申明式,它位于一个类的内部,它申明一个类或者一个函数为该类的友元。friend并不是定义一个成员函数,所以friend放在public,protected或者private前都可以,完全是一样的。做为一个友元,即表示在该类或者该函数内部可以访问这个类的私有成员,你和朋友之间是不是应该没有什么隐藏的呢。例子:class A{pub转载 2012-12-17 17:09:04 · 370 阅读 · 0 评论 -
android 里面的 AutoMutex
在 frameworks/base/libs/binder/ProcessState.cpp 的 startThreadPool() 函数中,函数一开始,就声明了:AutoMutex _l(mLock);就去了解了一下,不复杂,但感觉很有思想。在 frameworks/base/include/utils/threads.h 中,有:转载 2016-08-31 17:51:32 · 552 阅读 · 0 评论