- 版主
- 23805
- 4131
- 37
- 512 朵
- 1996 个
- 1192 个
- 138500
- 2004-08-11
|
1#
t
T
发表于 2009-03-19 22:13
|
|只看楼主
本帖最后由 一只鱼 于 2009-3-19 22:16 编辑 - C指针
- void PtrDemo(){
- //指针声明:
- char c = 'X'; //声明一个char型变量
- char* pc; long* pl; //声明普通指针
- POINT* pPt; //声明结构指针
- void* pv; //声明无类型指针
- int (*pfnCastToInt)(void *, void*); //声明函数指针:
- //指针赋值:
- pc = &c; //将变量c的地址值赋给指针pc
- pfnCompare = Compare; //函数指针赋值。
- //指针取值:
- c = *pc; //将指针pc所指处的内存值赋给变量c
- //用指针赋值:
- *pc = 'Y' //将'Y'赋给指针pc所指内存变量里。
- //指针移动:
- pc++; pl--;
- }
复制代码- VB指针
- Type POINT
- X As Integer
- Y As Integer
- End Type
- Public Function Compare(elem1 As Long, elem2 As Long) As Long
- '
- End Function
- Function FnPtrToLong(ByVal lngFnPtr As Long) As Long
- FnPtrToLong = lngFnPtr
- End Function
- Sub PtrDemo()
- Dim l As Long, c As Byte, ca() As Byte, Pt As POINT
- Dim pl As Long, pc As Long, pv As Long, pPt As Long, pfnCompare As Long
- c = AscB("X")
- pl = VarPtr(l) '对应C里的long、int型指针
- pc = VarPtr(c) '对应char、short型指针
- pPt = VarPtr(Pt) '结构指针
- pv = VarPtr(ca(0)) '字节数组指针,可对应任何类型,也就是void*
- pfnCompare = FnPtrToLong(AddressOf Compare) '函数指针
- CopyMemory c, ByVal pc, LenB(c) '用指针取值
- CopyMemory ByVal pc, AscB("Y"), LenB(c) '用指针赋值
- pc = pc + LenB(c) : pl = pl - LenB(l) '指针移动
- End Sub
复制代码
|