指针与数组

数组与指针

数组的指针是指数组在内存中的起始位置,数组元素的地址是指数组元素在内存中的起始位置。

一维数组的数组名为一维数组的指针,即起始位置。

int a[5];

a为a数组的起始位置

p指向a的首地址,则a[i], *(p+i) , *(x+i)和p[i]具有相同的作用,即访问数组的i+1个元素

#include <iostream>
using namespace std;
int main()
{
   int a[]={5,6,2,4,7};
   int * p;
   p = a;
   cout<<"a[3]的值" <<a[3]<<endl;
   cout<<"*(p+3)的地址"<<*(p+3)<<endl;
   cout<<"*(a+3)的地址"<<*(a+3)<<endl;
    return 0;
}

在这里插入图片描述


二维数组与指针

a+1 按行移动一次 a[0]+1按列移动一次

#include <iostream>
using namespace std;
int main()
{
   int a[3][2]={{5,6},{2,4},{7,2}};
   int * p;
   int n = sizeof(a)/sizeof(int);
   cout<<"a= "<<a<<" a+1="<<a+1<<endl;
   cout<<"a[0]= "<<a[0]<<" a[0]+1="<<a[0]+1<<endl;
   
    return 0;
}

在这里插入图片描述


行指针——存储行地址的指针变量

基本形式:

<存储类型> <数据类型> (*<指针变量名>)[表达式];

int a[2][3];  
int (*p)[3]; //常量数据表示指针加1,移动几个数据
#include <iostream>
using namespace std;
int main()
{
   int a[3][2]={{5,6},{2,4},{7,2}};
   int (*p)[2];
   p=a;
   int n = sizeof(a)/sizeof(int);
   cout<<"a= "<<a<<" a+1="<<a+1<<endl;
      cout<<"p= "<<p<<" p+1="<<p+1<<endl;
   cout<<"a[1][1]= "<<a[1][1]<<" p[1][1]="<<p[1][1]<<endl;
   
    return 0;
}

在这里插入图片描述

二维数组遍历的几种方式

#include <iostream>
using namespace std;
int main()
{
   int a[3][2]={{5,6},{2,4},{7,2}};
   int (*p)[2];
   p=a;
   int n = sizeof(a)/sizeof(int);
   int m = sizeof(a)/sizeof(a[0]);
    
   for(int i =0;i<m;i++)
   {

     for(int j=0;j<n/m;j++)
     {
       cout<<a[i][j]<<" ";
       cout<<p[i][j]<<" ";
       cout<<*(*(p+i)+j)<<" ";
       cout<<*(*(a+i)+j)<<" ";
     }
     cout<<endl;
   }
    return 0;
}

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值