7.4 指向数组元素的指针

声明与赋值

例:int a[10], *pa;

pa=&a[0]; 或 pa=a[p1] ;

通过指针引用数组元素,经过上述声明及赋值后:

*pa就是a[0],*(pa+1)就是a[1],... ,*(pa+i)就是a[i].

a[i], *(pa+i), *(a+i), pa[i]都是等效的。不能写 a++,不能给数组名赋值或者试图改变其值,因为a是数组首地址是常量。

例子:使用三种方法输出数组元素

使用数组名和下标

使用数组名指针运算

使用指针变量

int main()

{   int a[10];   int i;

   for(i=0; i<10; i++)

     cin>>a[i];

   cout<<endl;

   for(i=0; i<10; i++)

     cout<<a[i];}

int main()

{   int a[10];   int i;

   for(i=0; i<10; i++)

      cin>>a[i];

   cout<<endl;

   for(i=0; i<10; i++)

     cout<<*(a+i);}

int main()

{   int a[10];   int *p, i

   for(i=0; i<10; i++)

        cin>>a[i];

   cout<<endl;

   for(p=a; p<(a+10); p++)

        cout<<*p;}

7.5 指针数组

指针数组的元素是指针型,例如:point *pa[2];由pa[0] ,pa[1]两个指针组成。

#include <iostream>

using namespace std;

int main()

{

         int line1[]={1,0,0};      //声明数组,矩阵的第一行

         int line2[]={0,1,0};      //声明数组,矩阵的第二行

         int line3[]={0,0,1};      //声明数组,矩阵的第三行

         int *p_line[3];     //声明整型指针数组

         p_line[0]=line1; //初始化指针数组元素

         p_line[1]=line2;

         p_line[2]=line3;

         cout<<"Matrix test:"<<endl;         //输出单位矩阵

         for(int i=0;i<3;i++)     //对指针数组元素循环

         {

             for(int j=0;j<3;j++)      //对矩阵每一行循环

             {   cout<<p_line[i][j]<<" ";   }

             cout<<endl;

         }

}

  

#include <iostream>

using namespace std;

int main()

{

         int array2[2][3]={{11,12,13},{21,22,23}};     //声明二维int型数组

         for(int i=0;i<2;i++)

      {

             cout<<*(array2+i)<<endl;   //输出二维数组第i行的首地址

             for(int j=0;j<3;j++)

          {  cout<<*(*(array2+i)+j)<<" ";    }       //逐个输出二维数组第i行元素值

//写成 {  cout<<*array2[i][j]<<" ";  }比较好。

             cout<<endl;

         }

  

}//输出结果为:

0X0065FDE0

11,12,13

0X0065FDEC

21,22,23

C++——指针2-指向数组的指针和指针数组的更多相关文章

  1. 当this指针成为指向之类的基类指针时,也能形成多态

    this指针: 1)对象中没有函数,只有成员变量 2)对象调用函数,通过this指针告诉函数是哪个对象自己谁. #include<iostream> using namespace std ...

  2. [C++]指针和指向数组的指针[一维数组与指针]

     1.一维数组与指针      形如:int型 数组 a[10]                1)&a[0]  地址常量;地址类型:int *型   ; 存储数组a的首地址          ...

  3. const的理解、const指针、指向const的指针

    1.const 的理解 const 是C语言的一个关键字,需要注意的是,const 关键字是把变量变为一个只读的变量(也就是不可以作为左值),绝对不是将这个变量变为常量.也就是说经过const 修饰的 ...

  4. C和C指针小记(十八)-使用结构和指针-双向链表

    1.双链表 1.1 双向链表的声明 在一个双链表中,每个节点都包含两个指针--指向前一个节点的指针和指向后一个节点的指针. 声明 typedef struct NODE { struct NODE * ...

  5. 不可或缺 Windows Native (18) - C++: this 指针, 对象数组, 对象和指针, const 对象, const 指针和指向 const 对象的指针, const 对象的引用

    [源码下载] 不可或缺 Windows Native (18) - C++: this 指针, 对象数组, 对象和指针, const 对象,  const 指针和指向 const 对象的指针, con ...

  6. C语言数组指针(指向数组的指针)

    注意:数组指针的定义,与指针数组的区别 转载:http://c.biancheng.net/cpp/biancheng/view/162.html 指向多维数组元素的指针变量 ① 指向数组元素的指针变 ...

  7. C基础知识(3):指针--概念、数组中指针的递增/递减、指针数组&数组指针、指向指针的指针

    指针是一个变量,其值为另一个变量的地址. 所有指针的值的实际数据类型,不管是整型.浮点型.字符型,还是其他的数据类型,都是一样的,都是一个代表内存地址的长的十六进制数. 下面从4个代码例子分别讲述以下 ...

  8. C语言之数组,字符串,指针

    一. 数组的定义 1.  数组初始化 初始化方式 int a[3] = {10, 9, 6}; int a[3] = {10,9}; int a[] = {11, 7, 6}; int a[4] = ...

  9. C++二级指针第二种内存模型(二维数组)

    C++二级指针第二种内存模型(二维数组) 二维数组 二维数组本质上是以数组作为数组元素的数组,即“数组的数组”. 定义 类型说明符 数组名[常量表达式][常量表达式] 例如: float a[3][4 ...

  10. Swift中对C语言接口缓存的使用以及数组、字符串转为指针类型的方法

    由于Swift编程语言属于上层编程语言,而Swift中由于为了低层的高性能计算接口,所以往往需要C语言中的指针类型,由此,在Swift编程语言刚诞生的时候就有了UnsafePointer与Unsafe ...

随机推荐

  1. jQuery的动画以及扩展功能

    动画DOM及CSS操作 自定义动画 animate(最终css状态,时间) 这个最终css状态是一个对象 <!DOCTYPE html> <html lang="en&qu ...

  2. 5.Android-电话拨号器详解

    之前学习了3.Android-ADT之helloworld项目结构介绍后,本章便来写个简单的电话拨号器程序. 实现的步骤如下所示: 1.创建项目 2.写layout/activity_main.xml ...

  3. Mysql数据库操作(命令行)

    1 环境 树莓派: mysql: 2  指令 以下是从命令行中连接mysql服务器的简单实例: [root@host]# mysql -u root -p Enter password:****** ...

  4. Leetcode 与树(TreeNode )相关的题解测试工具函数总结

    最近在剑指Offer上刷了一些题目,发现涉及到数据结构类的题目,如果想在本地IDE进行测试,除了完成题目要求的算法外,还需要写一些辅助函数,比如树的创建,遍历等,由于这些函数平时用到的地方比较多,并且 ...

  5. Python 类 初学者笔记

    面对象编程:编写表现世界中的事物和景象的类,并基于这些类创建对象,被创建的对象称为实例化. 创建类 class Dog(): #Python中类名称中的首字母要大写 def __init__(self ...

  6. Linux设置文件权限和归属

    前言:在Linux文件系统的安全模型中,为系统中的文件(或目录)赋予了两个属性:访问权限和文件所有者,简称为“权限”和“归属”.其中,访问权限包括读取.写入.可执行三种基本类型,归属包括属主(拥有该文 ...

  7. 哈夫曼树 动态数组的使用vector

    问题描述 Huffman树在编码中有着广泛的应用.在这里,我们只关心Huffman树的构造过程. 给出一列数{pi}={p0, p1, …, pn-1},用这列数构造Huffman树的过程如下: 1. ...

  8. Mac常用命令行

    Mac环境下启动tomcat 1.进入文件夹----------cd apache-tomcat-9.0.10/ cd bin 2.启动tomcat---------sudo sh startup.s ...

  9. web端常见测试

    一.登录注册功能 1.页面调转 2.tab键与enter键 3.密码加密显示,是否支持复制粘贴 4.账号密码校验 5.刷新页面,更新验证码 二.界面测试 1.样式.颜色.整体布局风格 2.最大化.最小 ...

  10. 05-SV面向对象编程基础

    1.测试平台的构建 发生器(generator):创建事务并且将它们传给下一级 驱动器(drive):与设计进行会话 监视器(monitor):捕获设计返回的事务 计分板(scoreboard):将捕 ...