栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

C语言之指针数组与数组指针

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

C语言之指针数组与数组指针

1 指针数组

指针数组,顾名思义,主语为数组,表示存放指针(地址)的数组。

如以下代码:

int a=10;int b = 20;int c = 30; //定义三个变量
int* arr[3] = {&a;&b;&c};//定义指针数组
int i = 0;
for(i=0;i<3;i++)
{
    printf("%d ",*(arr[i]));//打印数组元素
}

同理,若将几个数组的地址一起存在一个指针数组里面,也可以采用上述代码格式。

比如,定义了三个数组int arr1[5], int arr2[5],int arr3[5],则可则可以定义指针数组int* parr[3] = {arr1,arr2,arr3}。

这里arr1表示arr1[5]数组的首元素的地址,它区别于&arr1(表示整个数组的地址),虽然两者打印的值相同,但意义不一样。

与上一段代码同样的元素打印思路,可以通过这个数组指针打印出来一个二维数组。

2 数组指针

数组指针,表示指向数组变量的指针。

例如,int (*p)[5]=&arr,就是一个数组指针。

理解为:p与*结合,p为一个指针变量,它指向一个大小为5的整型数组。

数组指针一般用在二维数组中。

例如:

void print_arr(int (*arr)[3],int row,int col)
{
    int i=o;
    for(i=0;i{1,2,3},{4,5,6}};
    print_arr(arr,2,3);
    return 0;
}

值得注意的是,此处,arr[i]=*(arr+i);arr[i][j]=*(arr+i)[j]=*(*(arr+i)+j)。

因此,代码中*(*(arr+i)+j)可以改写为arr[i][j],输出结果相同。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/932212.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号