C/C++
iteye_10289
这个作者很懒,什么都没留下…
展开
-
值传递,指针传递,引用传递
而关于值传递,指针传递,引用传递这几个方面还会存在误区, 所有我觉的有必要在这里也说明一下~下文会通过例子详细说明哦值传递:形参是实参的拷贝,改变形参的值并不会影响外部实参的值。从被调用函数的角度来说,值传递是单向的(实参->形参),参数的值只能传入,不能传出。当函数内部需要修改参数,并且不希望这个改变影响调用者时,采用值传递。指针传递:形参为指向实参地址的指针,...原创 2013-05-26 00:26:38 · 75 阅读 · 0 评论 -
FAR,NEAR区别
它是原来的16位Windows,如Windows3.2的遗留物。在16位Windows中,内存是分段的(学过8086汇编语言的话,应该很清楚这个概念),所以指针分为两类:FAR指针和NEAR指针。FAR表示指示的是另外一个段或者说全局地址,NEAR表示指示的是本段内部的地址。到了Win32中,内存具有32位的线性地址,没有分段的概念了,但是为了照顾Win16程序员的习惯,FAR和NEAR都被保留...原创 2013-10-15 21:18:36 · 2732 阅读 · 0 评论 -
宏定义函数
昨天,有人问我下面的程序输出结果是什么,特此记录下来 #include <iostream>#define put(x) ((x)*(x))using namespace std;int main() { int a[3] = {1,2,3}; int i = 0; int b = 3; int c; c = put(a[i++...原创 2013-10-30 16:38:17 · 369 阅读 · 0 评论 -
内核对象和句柄的介绍及注意事项
内核对象,句柄 系统会创建几种类型的内核对象,比如访问令牌对象、事件对象、文件对象、文件映射对象、I\O完成端口对象、作业对象、邮件槽对象、互斥量对象、管道对象、进程对象、信号量对象、线程对象、可等待计时器对象、线程池工厂对象等。 每个内核...原创 2013-10-31 21:17:15 · 260 阅读 · 0 评论 -
字符串指针的地址的传递
字符串指针的地址的传递 #include <iostream>using namespace std;void change(char **a) { (*a)++;}int main() { char b[] = "abc"; char *c = b; change(&c); cout << c <&...原创 2013-11-01 10:04:43 · 1412 阅读 · 0 评论 -
C++11 修复了双重检查锁定问题(转)
从网上看到了一篇这个文章,收藏一下 导读:本文是关于C++11标准中修复了双重检查锁定模式的消息,同时作者阐述了实现双重检查锁定模式的诸多方法,并逐一进行了分析,作者还提供了一个在早期编译器上实现双重检查锁定模式的库。双重检查锁定模式(DCLP)在无锁编程(lock-free programming)中经常被讨论,直到2004年,JAVA才提供了可靠的双重检查锁定实现。而在C++11...原创 2013-11-29 10:47:57 · 344 阅读 · 0 评论 -
C++中读取文件乱码问题
今天写一个C++的程序,遇到一个问题-------------读取一个文本文件,但是在输出的时候老是乱码,查看后原来文件的编码是unicode。 解决办法很简单,把你的文件另存为,然后再选编码的时候选择ASC、ANSI类型的编码就行了。 便可以用正常的方法对文件进行操作。...原创 2014-01-03 18:56:34 · 1857 阅读 · 0 评论 -
如何更改字符串
在修改字符串时,我们需要将字符串指针的地址传入至函数中,如下: void print(char *str, char **strAddr) { str++; cout << str << endl; *strAddr = str;} 即改变指针指向的位置,调用过程如下所示:char *a = "abcdefg";print(a...2014-04-22 14:22:13 · 316 阅读 · 0 评论 -
全局变量链接时的冲突
今天在写程序时,发现了一个全局变量引用时的连接错误,大概意思是为重复定义。在.h文件中,定义了一个变量,而这个.h文件被多个.c文件引用,在链接时出现该变量被重复定义的错误。原因很简单,在.c文件中,均把这个变量看作是自身的全局变量,故出现上述错误。 若想引用别的.c文件中定义的全局变量,则需在想引用该变量的.h文件中加入extern关键字声明该变量,进行变量的使用。 然后,...2014-05-04 21:45:59 · 500 阅读 · 0 评论 -
C++容器删除数据时迭代器失效
我们在做c++容器的元素删除时,需要使用迭代器,并且调用erase方法时,必须传入迭代器的指针位置,所以在删除操作进行判断满足条件删除时,将变得较为麻烦。项目中通用解决思路一:遍历vector向量,记录满足条件的迭代指针的位置,看做成索引计数存入vector<int>中,并且这个顺序一定是由前向后的,而如果我们按照如下规定删除,会有异常,vector<int&g...2014-05-14 22:10:58 · 171 阅读 · 0 评论 -
c++的学习笔记
在网上看到了一篇c++的学习笔记不错,拿过来跟朋友们分享。原文地址为http://www.cnblogs.com/maowang1991/p/3290321.html 1.struct成员默认访问方式是public,而 class默认访问方式是private!2.exit函数终止程序执行会调用析构函数 ,abort函数终止程序不会调用析构函数!3.静态局部变量直...原创 2014-05-14 22:23:27 · 114 阅读 · 0 评论 -
c++的学习笔记之二
1. 类中定义的静态变量在编译时没有出错,但是在链接时出现错误,原因是该静态变量没有初始化。class Obj {public: //...private: static vector<string> vstr;}; vector<string> Obj::vstr; 这样在别的地方就可以使用该静态变量了,具体使用方法...2014-05-16 17:00:33 · 85 阅读 · 0 评论 -
LPVOID类型
LPVOID是一个没有类型的指针,也就是说你可以将任意类型的指针赋值给LPVOID类型的变量(一般作为参数传递),然后在使用的时候再转换回来。 可以将其理解为long型的指针,指向void型。头文件windef.h中有typedef void far *LPVOID32-bit指针,指向一个未指定类型的数据例如:class CMyClass { void Sta...原创 2013-10-15 20:54:54 · 1999 阅读 · 0 评论 -
UINT_MAX输出后为什么是-1
无符号INT最大二进制为(11111111111111111111111111111111)也是十六进制(0xffffffff)如果你当成有符号数取补码后输出就得-1;如果你当成无符号数就是最大数即:4294967295例程如下:#include <stdio.h>#include <limits.h>int main(int argc, c...原创 2013-10-10 16:35:14 · 5527 阅读 · 1 评论 -
VS 2005 VS2008 VS2010 设置断点,在调试时产生断点错位如何解决
VS 2005 VS2008 VS2010 设置断点,在调试时产生断点错位怎么解决 问题如下:1.错误代码报错行数错位 2.debug动态跟踪错位 3.Release跟踪错位 4.断点设置自动被跳转可能的原因有三种:第一:代码和dll或者exe不一致;第二:数组等越界导致内存乱了; 第三:0D0A 改为了0D少了0A或者中文注释打乱了VS对0D0A的定...原创 2013-05-29 23:07:49 · 742 阅读 · 0 评论 -
如何学好C++语言
昨天写了一篇如何学好C语言,就有人回复问我如何学好C++,所以,我把我个人的一些学习经验写在这里,希望对大家有用。首先,因为如何学好C语言中谈到了算法和系统,所以这里就只谈C++语言。C++是最难的语言。这个世界上最难的编程语言可能非C++莫属了。你千万不要以为几天就可以学好C++,C++的学习曲线是相当BT的,你可以看看这篇文章。C++是一门很自由的语言,自由到了有点BT和恐怖的地步。...原创 2013-05-31 08:19:03 · 60 阅读 · 0 评论 -
C语言运算符优先级 详细列表
http://www.slyar.com/blog/c-operator-priority.html原创 2013-06-02 20:41:22 · 61 阅读 · 0 评论 -
友元函数的访问权限和注意事项
友元函数要在一个类体内说明,形式为:形式friend 类型名 友元函数名(形参表);然后在类体外对友元函数进行定义,定义的格式和普通函数相同,但可以通过对象作为参数直接访问对象的私有成员友元函数说明如下:1)必须在类的说明中说明友元函数,说明时以关键字friend开头,后跟友元函数的函数原型,友元函数的说明可以出现在类的任何地方,包括在private和public...原创 2013-06-24 16:33:45 · 1752 阅读 · 0 评论 -
7个示例科普CPU Cache(转)
转载本站文章请注明作者和出处 酷壳 – CoolShell.cn ,请勿用于任何商业用途 CPU cache一直是理解计算机体系架构的重要知识点,也是并发编程设计中的技术难点,而且相关参考资料如同过江之鲫,浩瀚繁星,阅之如临深渊,味同嚼蜡,三言两语难以入门。正好网上有人推荐了微软大牛Igor Ostrovsky一篇博文《漫游处理器缓存效应》,文章不仅仅用7个最简单的源码示例就将CPU ...原创 2013-07-30 20:17:02 · 831 阅读 · 1 评论 -
C++内联函数(Inline)
介绍内联函数之前,有必要介绍一下预处理宏。内联函数的功能和预处理宏的功能相似。相信大家都用过预处理宏,我们会经常定义一些宏,如 #define TABLE_COMP(x) ((x)>0?(x):0) 就定义了一个宏。 为什么要使用宏呢?因为函数的调用必须要将程序执行的顺序转移到函数所存放在内存中的某个地址,将函数的程序内容执行完后,再返回到转去执行该函数前的地...原创 2013-08-04 16:56:56 · 69 阅读 · 0 评论 -
显式强制类型转换static_cast, dynamic_cast, const_cast, reinterpret_cast
显式强制类型转换(cast)包括以下操作符:static_cast, dynamic_cast, const_cast, reinterpret_cast,对各种显式类型转换解释:static_cast:编译器隐式执行的转换都可以有static_cast显式执行。例子:double num = 12.32; int data = num;这个例子完成了显式类型转换,...原创 2013-08-04 21:09:40 · 98 阅读 · 0 评论 -
隐式类型转换与转换操作符operator T
隐式类型转换与转换操作符 operator TC++ 标准允许隐式类型转换,即对特定的类,在特定条件下,某些参数或变量将隐形转换成类对象 ( 创建临时对象 ) 。如果这种转换代价很大 ( 调用类的构造函数 ) ,隐式转换将影响性能。隐式转换的发生条件:函数调用中,当参数类型不匹配,如果隐式转换后能满足类型匹配条件,编译器将启用类型转换。控制隐式类型转换的两种途径:1) ...原创 2013-08-14 15:01:08 · 144 阅读 · 0 评论 -
C语言标准库函数 qsort 详解
文章作者:姜南(Slyar) 文章来源:Slyar Home (www.slyar.com) 转载请注明,谢谢合作。 qsort包含在<stdlib.h>头文件中,此函数根据你给的比较条件进行快速排序,通过指针移动实现排序。排序之后的结果仍然放在原数组中。使用qsort函数必须自己写一个比较函数。函数原型:void qsort ( void * base, size_...原创 2013-08-28 10:53:36 · 78 阅读 · 0 评论 -
C语言中宏定义和函数的取舍
要写好C语言,漂亮的宏定义是非常重要的。宏定义可以帮助我们防止出错,提高代码的可移植性和可读性等。在软件开发过程中,经常有一些常用或者通用的功能或者代码段,这些功能既可以写成函数,也可以封装成为宏定义。那么究竟是用函数好,还是宏定义好?这就要求我们对二者进行合理的取舍。我们来看一个例子,比较两个数或者表达式大小,首先我们把它写成宏定义:#define MAX( a, b) ( (a) &...原创 2013-10-08 15:42:11 · 91 阅读 · 0 评论 -
虚析构函数的使用
面试时被问到了虚析构函数的使用,特此记录 首先我们写两个类:#ifndef CLX_H#define CLX_H#include <iostream>class ClxBase {public: ClxBase() {std::cout << "clx_base has been created" << std::end...原创 2014-07-02 21:12:18 · 183 阅读 · 0 评论