易截截图软件、单文件、免安装、纯绿色、仅160KB

C/C++指针

最近工作不紧,抽空看了下C、C++的指针,发现了一些平时没注意到的指针用法和问题。
1、指针引用
void func1(MYCLASS* &pBuildingElement);
乍一看,怪怪的,看了下解释,细想一下和指针的指针类似:
void func1(MYCLASS** pBuildingElement);
看下面的例子:
...
MyClass* p = new MyClass;
func1(p);
...
func1的定义如下:
void func1(MyClass* pMyClass)
{
...
pMyClass = //其他对象的指针
...
}
第二条语句func1(p);在函数过程中只修改了pMyClass的值。并没有修改调用者的变量p的值。假设要在func1中修改p的值,现在就有两种方法:一是利用指针的指针,二是利用指针的引用。
以上代码可修改为:
//指针的指针
...
MyClass* p = NULL;
func1(&p);
...
func1的定义如下:
void func1(MyClass** pMyClass)
{
...
*pMyClass = new MyClass;
...
}
//指针的引用
...
MyClass* p = NULL;
func1(p);
...
func1的定义如下:
void func1(MyClass* &pMyClass)
{
...
pMyClass = new MyClass;
...
}
其实,它和前面指针的指针是一码事,只是语法有所不同。传递的时候不用传p的地址,而是直接传p本身。
至于说什么场合要使用这种方法,我会说,极少。MFC在其集合类中用到了它--例如,CObList,它是一个Cobjects指针列表。 
Class CObList : public Cobject
{
……
// 获取/修改指定位置的元素
Cobject*& GetAt(POSITION position);
Cobject* GetAt(POSITION position) const;
};
这里有两个GetAt函数,功能都是获取给定位置的元素。区别何在呢?
2、数据指针
常规数据指针和成员数据指针
这里主要涉及成员数据指针的内容。
struct MyStruct{
int value;
int key;
}
struct MyStruct me;
struct MyStruct* pMe;
定义成员数据指针:
int MyStruct::* pMV = &MyStruct::value;
int MyStruct::* pMK = &MyStruct::key;
这种指针的用途是用于取得结构成员在结构内的地址。我们可以通过该指针来访问成员数据:
     int value = pMe->*pMV; // 取得pMe的value成员数据。
     int key = me.*pMK; // 取得me的key成员数据。
 
那么,在什么场合下会使用到成员数据指针呢?
确实,成员指针本来就不是一种很常用的指针�


相关文档:

extern及extern “C”用法

extern是C/C++语言中表明函数和全局变量作用范围(可见性)的关键字创意产品网 .
它告诉编译器,其声明的函数和变量可以在本模块或其它模块中使用。
1。对于extern变量来说,仅仅是一个变量的声明,其并不是在定义分配内存空间。如果该变量定义多次,会有连接错误
2。通常,在模块的头文件中对本模块提供给其它模块 ......

c/c++笔试题目(林锐)

本试题仅用于考查C++/C程序员的基本编程技能。内容限于C++/C常用语法,不涉及数据结构、算法以及深奥的语法。考试成绩能反映出考生的编程质量以及对C++/C的理解程度,但不能反映考生的智力和软件开发能力。
笔试时间90分钟。请考生认真答题,切勿轻视。
一、请填写BOOL , float, 指针变量 与“零值”比较的 i ......

C/C++ static和可重入概念

static
C++中的static
  C++的static有两种用法:面向过程程序设计中的static和面向对象程序设计中的static。前者应用于普通变量和函数,不涉及类;后者主要说明static在类中的作用。
  一、面向过程设计中的static
  1、静态全局变量
  在全局变量前,加上关键字static,该变量就被定义成为一个静态全局变 ......

在linux下,如何在C语言中使用正则表达式(整理)


  一个正则表达式的教程可以参看(里面有个测试正则表达式的工具)
     http://unibetter.com/deerchao/zhengzhe-biaodashi-jiaocheng-se.htm#ad
 
     正则表达是用来匹配字符串的好东东。
   
     如果用户熟悉Lin ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号