C++基础学习之14 - 再谈指针

来源:互联网 发布:soton数据分析 视频 编辑:程序博客网 时间:2024/06/04 17:48

        前面已经讲过C++指针的概念,指针是一个特殊变量,里面保存了一个内存地址。

        那么指针本身占了多大内存呢? 在32位平台上是 32位(4字节),在64位平台上就是 64 位。

        我们通过代码来看一下指针的寻址方式。

int a[5] = { 1,2,3,4,5 };  int *p = a;  for(i=0;i<5;i++) {      (*p)++;  // 通过(*)取值    p++;  // 下一个地址}  
        说白了,指针本身就是一个内存地址,这个地址可以通过变量的 取地址符号(&)来获得:

int nFirstTime = 1;int nLastTime = 100;int *p = &nFirstTime; // 取地址(*p) = 10; // now firstTime = 10p = &nLastTime; // 重新取地址
        在代码中你可能会遇到这样的概念,即 指针的指针(**)或者指针的引用(*&),来看例子:

char Arr1[16][16]; // 生成16*16的二维数组int **pArr2 = new int*[16]; // 在堆上声明16*16的数组for(int i=0;i<16;i++){    pArr2[i] = new int[16];}// 通过下标访问pArr2[i][j];// 对应删除方式for(int i=0;i<16;i++){    delete[] pArr2[i];}delete[] pArr2;// 指针的引用void getName(char*& _name){    _name = "linolzhang";}// 指针的指针void getName(char** _name){    *_name = "linolzhang";}char *strName = NULL;getName(strName);  // now strName = "linolzhang"getName(&strName);  // 同上
        记住地址的概念,深刻理解一下上面的例子,回头一切了然。
2 0
原创粉丝点击