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

最新文章

  1. 【转】Android SDK Samples,学习Android的好方法
  2. HDU 3966 Aragorn&#39;s Story 树链剖分+树状数组 或 树链剖分+线段树
  3. Dos学习笔记(3)attrib命令
  4. struts2.3.24 + spring4.1.6 + hibernate4.3.11+ mysql5.5.25开发环境搭建及相关说明
  5. 新浪网易淘宝等IP地区信息查询开放API接口调用方法
  6. gcc编译, gdb调试, makefile写法
  7. Asp.net绑定带层次下拉框(select控件)
  8. FlushMode属性与transaction(spring注入的事务)
  9. 解决:未能加载文件或程序集“Newtonsoft.Json, Version=4.5.0.0
  10. JQ插件开发方法
  11. Javascript多线程引擎(六)
  12. android移动开发学习笔记(二)神奇的Web API
  13. 2017&lt;java技术&gt;预备作业计科冀浩然
  14. zoj3204 Connect them 最小生成树
  15. Codeforces Round #326 (Div. 2) B
  16. ABP官方文档翻译 3.8 数据过滤器
  17. 从MySQL Bug#67718浅谈B+树索引的分裂优化(转)
  18. JS列表
  19. C# sha256 加密算法
  20. 【DeepLearning】Exercise: Implement deep networks for digit classification

热门文章

  1. uniapp简易直播
  2. Linux nohup不输出日志文件的方法
  3. 使用JDK工具进行Java服务器应用程序故障排除
  4. C#_.net core 3.0自定义读取.csv文件数据_解决首行不是标题的问题_Linqtocsv改进
  5. js对象模型3
  6. day16 匿名函数
  7. Debian 10 xfce 错误提示 ACCESS DENIED
  8. ora.vip 1 ONLINE INTERMEDIAT
  9. 剑指offer-面试题32-分行从上到下打印二叉树-二叉树遍历
  10. sql关系型运算符优先级高到低为:not &gt;and&gt; or