指针(组成的)数组
指针元素组成的数组,数组的每个元素都是一个指向某个类型(后文以整型为例)的指针。
代码示例
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个数组成的数组看成了一个整体)
}
}
注意事项
使用数组的指针或者指针数组时,一定要注意+/-的访问越界。