int **q可以分成两部分,即int* 和 (*q),后面的 “q” 中的* 表示q是一个指针变量,前面的int*表示指针变量q只能存放int*型变量的地址.int** q表示为指针变量q只能存放int*型变量的地址. 4-1.c多维数组的定义 #include<stdio.h> int main(void) { int i,j; int data[2][3]={{1,2,3},{4,5,6}}; //定义二维数组data,2行3列:并对其进行初始化 printf("data[2]
在从汇编看c++中指向成员变量的指针(一)中讨论的情形没有虚拟继承,下面来看看,当加入了虚拟继承的时候,指向成员变量的指针有什么变化. 下面是c++源码: #include <iostream> #include <cstdio> using namespace std; class Top { public: int _top; }; class Left : public virtual Top { public: int _left; }; class Right : pub
4.4 指向Member Function的指针 (Pointer-to-Member Functions) 取一个nonstatic data member的地址,得到的结果是该member在 class 布局中的byte位置(再加1),它是一个不完整的值,须要被绑定于某个 class object的地址上,才可以被存取. 取一个nonstatic member function的地址,假设该函数是nonvirtual,则得到的结果是它在内存中真正的地址.然而这个值也是不全然的,它也须要被绑定
const对象: const对象声明时必须赋初值,该值在编译阶段确定,不可在程序中修改. const修饰符既可放在类型名前也可放在类型名后,通常放在类型名前.不过放在类型名后易于理解. const int a = 7; int b = 8; int array[a];//合法, a是const变量,值在编译阶段确认 int arr[b]; //不合法,b是个普通变量,值没有在编译阶段确定 指向const对象的指针: 可理解为“自认为指向const对象的指针”,其实际所指向的对象不一定是cons