C++指针数组和数组指针

指针(组成的)数组

指针元素组成的数组,数组的每个元素都是一个指向某个类型(后文以整型为例)的指针。

代码示例

int nums[4] = {39, 49, 52, 58};
int *ptr_each[5];	//初始化整型指针数组

//*ptr_each = &nums[0];与下句作用相同
*ptr_each = nums;

//注意ptr_each第一个元素指向了nums[0],ptr_each数组 后面的4个值仍未指定
for(int idx=0;idx!=4;++idx)
{
	std::cout << *(*ptr_each + idx) << " ";
	//ptr_each是整型指针,*ptr_each是一个整型变量的地址,+idx 会
	//把*ptr_each这个地址值加4倍的idx(int占4个字节),这样就可以访问nums[idx]了
}

//另建一个数组
int anohter_nums[]={2,3,3};
//ptr_each数组第二个元素指向another_nums数组的首元素
ptr_each[1] = another_nums;

for(int idx{0};idx!=3;++idx)
{
	std::cout<<*(ptr_each[1]+idx)<<" ";
}
std::cout<<std::endl;
return 0;

数组(的)指针

指向一个数组的指针

代码示例

    int matrix[2][3] = {{5, 2, 0}, {2, 3, 3}};

//ptr_id是一个指针,指向长度为3的数组
    int(*ptr_id)[3];
    ptr_id=matrix;

    for(int row{0};row!=2;++row)
    {
        for(int col{0};col!=3;++col)
        {
            std::cout<<*(*(ptr_id+row)+col)<<" ";
 		//ptr_id+row ptr_id指向长度为3的数组,ptr_id+1表示
 		//指向紧邻的下一个长度为3的数组(把连续的3个数组成的数组看成了一个整体)
        }
    }

注意事项

使用数组的指针或者指针数组时,一定要注意+/-的访问越界。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值