标题:.各位师哥师姐!有一串代码看不懂
只看楼主
z15220480946
Rank: 1
等 级:新手上路
帖 子:5
专家分:4
注 册:2019-1-28
结帖率:100%
已结贴  问题点数:15 回复次数:3 
.各位师哥师姐!有一串代码看不懂


其中第四行的   (*p)[5]    和第九行的   scanf("%d",(*(p+i))+j)   中的(*(p+i))+j    以及   printf("%5d",*(*(p+i))+j)    中的   
 *(*(p+i))+j    是什么意思和为什么可以这样写!
搜索更多相关主题的帖子: 代码 scanf printf 
2019-08-23 21:02
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:507
帖 子:8890
专家分:53117
注 册:2011-1-18
得分:5 
其中第四行的   (*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] )
2019-08-23 21:38
TysonKoothra
Rank: 5Rank: 5
等 级:职业侠客
威 望:7
帖 子:71
专家分:374
注 册:2018-10-21
得分:10 
程序代码:
#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编辑过]

2019-08-23 21:53
z15220480946
Rank: 1
等 级:新手上路
帖 子:5
专家分:4
注 册:2019-1-28
得分:0 
谢谢
2019-08-24 09:04



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-496535-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 1.001428 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved