多级指针的概念

多级指针可对应于多维数组,这种指针变量中存的是另一个指针变量的地址,其说明如下:
    int val=10;
    int *ptr=&val;
    int **pptr=&ptr;
    int ***ppptr=&pptr; //是多少级指针就有多少*号
这里val值为10,*ptr值也为10,**pptr的值和***ppptr的值均为10。注意这里的*号与定义中的*号意义不同,前者是指针说明符,后者是运算符,称间接引用运算符。

【例5.13】多级指针。
#include<iostream>
using namespace std;
int main(){
    int val=66;
    int *pval = &val;
    int **ppval = &pval;
    cout<<"val="<<val<<'\n'<<"**ppval="<<**ppval<<'\n';
    **ppval=18;
    cout<<"val="<<val<<'\n'<<"**ppval="<<**ppval<<endl;
    return 0;
}

指针两要素

指向数组(元素)类型的指针,与一维数组名是等效的:
    int a[10], *pa =a;
则写pa[0] ,就是a[0];
    *pa,即a[0];
    *(pa+1) 和pa[1] ,都代表a[1]。
指针有两要素:地址和所指向目标的数据类型。a 与pa 两者都是一样的,所以pa 可以替代a。

二维数组与指针

二维数组是数组元素为一维数组的数组,所以等效的指针类型应该是指向一维数组的指针类型。如有:
    int x2d[3][4]={1,2,3,4,5,6,7,8,9,10,11,12};
    int (*pt)[4]=x2d;
则指针pt和x2d是等效的。它们表示的首地址一样,所指目标类型也一样,pt可以代替x2d,就象pa代替a一样。

指向一维数组的指针的定义如下:
    数据类型 (* 指针变量名)[n];

这里数组元素的个数n不可省略。因是指向指针的指针,称二级指针。

【例5.14】用指向二维数组基本元素的指针变量,和用指向组成二维数组的一维数组的指针变量输出二维数组全部基本元素。
#include< iostream>
using namespace std;
int main( ){
    int a[3][6]={{1,2,3,4,5,6},{7,8,9,10,11,12},{13,14,15,16,17,18}};
    int  * ptr,i,j;
    ptr=&a[0][0] ;       //或 ptr = *a; 而不能ptr = a;
    for(i=0;i<18;i++){
        cout<<*(ptr+i)<<'\t';
        if(i%6==5) cout<<endl;
    }
    cout<<endl;
    int  (* ptr1)[6];       //注意 ptr1是指向包含6个整型元素的一维数组的指针
    ptr1=a;
    for(i=0;i<3;i++){
        for(j=0;j<6;j++) cout<<*(*(ptr1+i)+j)<<'\t';
        cout<<endl;
    }
    return 0;
}

用指向数组元素的指针把数组传递到函数里,同时传递行列信息,就可以实现通用性。

C++多级指针与多维数组详细介绍的更多相关文章

  1. 图解c/c++多级指针与“多维”数组

    声明:本文为原创博文,如有转载,请注明出处.若本文有编辑错误.概念错误或者逻辑错误,请予以指正,谢谢. 指针与数组是C/C++编程中非常重要的元素,同时也是较难以理解的.其中,多级指针与“多维”数组更 ...

  2. 图解C/C++多级指针与多维数组

    声明:本文转自 chenyang_yao ,欢迎阅读原文. 指针与数组是C/C++编程中非常重要的元素,同时也是较难以理解的.其中,多级指针与“多维”数组更是让很多人云里雾里,其实,只要掌握一定的方法 ...

  3. C语言数组篇(五)多级指针和二维数组指针的区别

    多级指针   以二级指针为例 二级指针的由来是 指针数组 的指针形式. int *p[10] 读取的顺序是 p[] --> 10个空间的数组 * p[] --> 这10个空间的数组里面存放 ...

  4. C:指针遍历二维数组

    C 指针遍历二维数组 http://blog.csdn.net/lcxandsfy/article/details/55000033 C++ 字符串指针与字符串数组 https://www.cnblo ...

  5. 论C语言中二级指针和二维数组之间的区别

    刚开始学习C语言的时候,觉得一个数组可以定义一个一级指针去访问,想当然的就觉得可以定义一个二级指针去访问二维数组.很显然这是错误的. 我们来看看C语言的数组在内存中的存储方式. 实际上C语言中的数组, ...

  6. 20130330 printf数组改变 数组指针便利二维数组 二级指针遍历二维数组 ZigZag

    1.为什么printf之后数组的值会改变? #include<stdio.h> ; int * Zigzag() { ,j=,limit=; ; ; int a[N][N]; int (* ...

  7. C语言中指针和多维数组

    指针和多维数组 数组名是特殊的指针 数组是一个特殊的指针,多维数组也是更为复杂的数组,它们的关系是什么样的呢? 我们通过一个简单的例子来比较形象的了解指针和多维数组: int a[2][3]; 这是一 ...

  8. C指针与二维数组

    先贴上完整的代码: #include<stdio.h> int main(int argc, char *argv[]){ int a[3] [5]={1,2,3,4,5,6,7,8,9, ...

  9. typedef 与指针、多维数组

    1.在typedef中使用指针往往会带来意外的结果.如下: typedef string *pstring; const pstring cstr; 绝大数人刚开始都会认为cstr是一种指针,它指向c ...

随机推荐

  1. 第 5 章 基础 DOM 和 CSS 操作

    在常规的 DOM 元素中,我们可以使用 html()和 text()方法获取内部的数据.html()方法 可以获取或设置 html 内容,text()可以获取或设置文本内容. $('#box').ht ...

  2. CSS Sprites+CSS3 Icon Font

    CSS Sprites+CSS3 Icon Font CSS Sprites在国内很多人叫CSS精灵,是一种网页图片应用处理方式.它允许你将一个页面涉及到的所有零星图片都包含到一张大图中去,这样一来, ...

  3. webrtc初识

    最近由于项目的需求,开始接触了webrtc这个东西.没想到这东西的门槛还是蛮高的,接下来分享一下我所踩过的坑,希望对以后初次接触这个东西的人有所帮助. webrtc官网 第一步当然是看官方主页了(ww ...

  4. js 函数返回函数

    <script> var aa = function(fn, time, interval){ return function(){ if (typeof(fn) != 'function ...

  5. shell 条件判断

    一.数值判断 INT1 -eq INT2           INT1和INT2两数相等为真 INT1 -ne INT2           INT1和INT2两数不等为真 INT1 -gt INT2 ...

  6. 深入理解ANGULARUI路由_UI-ROUTER

    最近在用 ionic写个webapp 看到几个demo中路由有好几种,搞的有点晕,查下资料研究下,做个笔记,其中大部分为摘抄别人的,做个说明免得被人吐槽. Angularjs ui-router - ...

  7. 自动化服务安装部署工具-Ansible

    自动化运维工具Ansible详细部署 ================================================================================= ...

  8. new一个JAVA对象的时候,内存是怎么分配的?

    new 对象的时候 在内存中 建立一个 内存区域 就是堆内存 用来存放对象的属性,当new完对象把对象的地址赋给对象的引用变量 这个时候 又在内存中建立一个区域 叫栈内存 用来存储 引用变量 引用变量 ...

  9. iOS小画板画线总结

    一:基本画线: 使用贝赛尔曲线画: //创建路径 UIBezierPath* aPath = [UIBezierPath bezierPath]; //设置线宽 aPath.lineWidth = 5 ...

  10. android studio 2.0 GPU Debugger使用说明

    GPU Debugger GPU Debugging Tools The GPU debugging tools are an experimental feature intended to hel ...