注册 登录
编程论坛 C语言论坛

.各位师哥师姐!有一串代码看不懂

z15220480946 发布于 2019-08-23 21:02, 1655 次点击
只有本站会员才能查看附件,请 登录

只有本站会员才能查看附件,请 登录

其中第四行的   (*p)[5]    和第九行的   scanf("%d",(*(p+i))+j)   中的(*(p+i))+j    以及   printf("%5d",*(*(p+i))+j)    中的   
 *(*(p+i))+j    是什么意思和为什么可以这样写!
3 回复
#2
rjsp2019-08-23 21:38
其中第四行的   (*p)[5]
——— 第四行是 int  (*p)[5],这个 int 不能省

scanf("%d",(*(p+i))+j)
——— 就是 scanf("%d", &p[i][j] )

printf("%5d",*(*(p+i))+j)
——— 就是 printf("%5d", p[i][j] )
#3
TysonKoothra2019-08-23 21:53
程序代码:

#include <stdio.h>

int main(void)
{
    int a[3][5], (*p)[5]; // int (*p)[5] 是一个数组指针,本例用来方便地访问一个二维数组。
    p = &a[0];
    printf("输入三行五列整数:\n");
    for (int i = 0; i < 3; i++) {
        for (int j = 0; j < 5; j++) {
            // scanf("%d", (*(p+i))+j );
            scanf("%d", &p[i][j]); // 这句和上面的等价
        }
    }

    p = &a[2];
    printf("第三行是:\n");
    for (int k = 0; k < 5; k++) {
        // printf("%d, ", *(*(p)+k));
        printf("%d, ", p[0][k]); // 这一句和上面的等价
    }
    puts("");
}


[此贴子已经被作者于2019-8-23 22:10编辑过]

#4
z152204809462019-08-24 09:04
谢谢
1