C语言int (*p)[3]

本文深入解析C语言中复杂指针类型int(*p)[3]的含义与应用,通过实例演示如何使用此类指针遍历二维数组并找到最大值。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

     

以前学C语言的时候,每次看到这个int (*p)[3],就一脸懵逼,这次又恰巧有个同学问了我,我就翻书看了看,找出了答案,写一篇博客记录一下。

首先还是翻出我们谭浩强版本的C语言程序设计,红色方框里面的int (*p)[4],里面说的听清楚,其实就是吧(*p)和[4]分开来理解,p所指的对象是有4个整形元素的数组,即p是指向一维数组的指针,或者说p指向的是二维数组的行,然后(*p)[0]指的是p指向的行的第0列。

下面有个案列来让我们学以致用。

#include <stdio.h>
void f()
{
    int a[2][3] = {{4, 9, 6},{2, 5, 7}};
    int (*p)[3], *q;    //p指 二维数组的行, q指 二维数组的列
    int max = a[0][0];
    for (p = a; p - a < 2 ; p++) {  //p = a意思是p指向a[0],p - a < 2,意思是有两行,计算时会变成0-0,1-0,不会超过二
        for (q = *p; q - *p < 3 ; q++) {  //*p其实是(*p)[0],即*p指向第0列,这里省略了[0],就像上面p = a,其实是把a[0]赋给p,q - *p < 3意思是三行,意思同上
            if (*q > max)
                max = *q;
        }
    }
    printf("Max: %d\n", max);
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值