C++指针探究(一)数据指针[VC/C++编程]
本文“C++指针探究(一)数据指针[VC/C++编程]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:
指针,在C/C++语言中一向是很受宠的;几近找不到一个不利用指针的C/C++利用.用于存储数据和程序的地址,这是指针的基本功效.用于指向整型数,用整数指针(int*);指向浮点数用浮点数指针(float*);指向构造,用对应的构造指针(struct xxx *);指向肆意地址,用无范例指针(void*).
有时刻,我们需求一些通用的指针.在C语言当中,(void*) 可以代表一切;但是在C++中,我们还有一些对比特别的指针,无法用(void*)来表示.事实上,在C++中,想找到一个通用的指针,分外是通用的函数指针简直是一个“不大概任务”.
C++是一种静态范例的语言,范例安全在C++中举足轻重.在C语言中,你可以用void*来指向一切;但在C++中,void*并不能指向一切,就算能,也失去了范例安全的意义了.范例安全常常能帮我们找出程序中潜在的一些BUG.
下面我们来探究一下,C++中若何存储各种范例数据的指针.
1.数据指针
数据指针分为两种:通例数据指针和成员数据指针
1.1 通例数据指针
这个不用阐明了,和C语言一样,定义、赋值是很简单明了的.常见的有:int*, double* 等等.
如:
int value = 123;
int * pn = &value;
1.2 成员数据指针
有以下的构造:
struct MyStruct
{
int key;
int value;
};
目前有一个构造对象:
MyStruct me;
MyStruct* pMe = &me;
我们需求 value 成员的地址,我们可以:
int * pValue = &me.value;
//或
int * pValue = &pMe->value;
当然了,这个指针仍旧是属于第一种范筹——通例数据指针.
好了,我们目前需求一种指针,它指向MyStruct中的任一数据成员,那么它应当是这样的子:
int MyStruct::* pMV = &MyStruct::value;
//或
int MyStruct::* pMK = &MyStruct::key;
这种指针的用处是用于获得结构成员在构造内的地址.我们可以通过该指针来拜候成员数据:
int value = pMe->*pMV; // 获得pMe的value成员数据.
int key = me.*pMK; // 获得me的key成员数据.
以上是“C++指针探究(一)数据指针[VC/C++编程]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:
本文地址: | 与您的QQ/BBS好友分享! |