| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1942 人关注过本帖
标题:printf中的表达式*(*(a+1)+j)该怎么翻译成中文步骤
只看楼主 加入收藏
ycyu1455
Rank: 1
等 级:新手上路
帖 子:38
专家分:0
注 册:2016-4-3
结帖率:33.33%
收藏
 问题点数:0 回复次数:3 
printf中的表达式*(*(a+1)+j)该怎么翻译成中文步骤
很难理解里面的表达式 *(*(a+1)+j),表达式中的最里面的星号*和最外面的星号具体有什么作用 ,下面是我的理解

求解呀,我知道我的理解肯定是错的,但是星号*在printf中的功能就是返回地址值指向内存中的存储值呀

#include<stdio.h>
main()
{
int a[3][5],i,j;

for(i=0;i<3;i++)
for(j=0;j<5;j++)
scanf("%d",*(a+i)+j);
printf("%5d",*(*(a+1)+j)); //这个表达式*(*(a+1)+j)这么翻译对不对,先运算a+1:进行第一行首地址值+1,结果是第二行首地址值;再运算*(a+1):返回第二行第一个元素存储的值,加入输入了1~15,这个值应该是6?,然后在运行+j:6+j?这理解好像错的很离谱
}
搜索更多相关主题的帖子: include 表达式 中文 元素 
2016-06-20 20:50
linlulu001
Rank: 13Rank: 13Rank: 13Rank: 13
等 级:贵宾
威 望:20
帖 子:944
专家分:4047
注 册:2016-4-13
收藏
得分:0 
*(*(a+1)+j)a+1是指加1行,也就是第二行,再加j,是指第j列。
2016-06-20 21:31
格格不入fl
Rank: 3Rank: 3
等 级:论坛游侠
威 望:1
帖 子:56
专家分:192
注 册:2016-3-23
收藏
得分:0 
因为你这里是一个二维数组 *(a+1)等同a[1]是这一行的首地址并不是内存地址中存放的值   *(a+1)+j等同于&a[1][j]移动到这一行第j个元素的地址 *(*(a+1)+j)通过间接访问符访问&a[i][j]内存中的值
2016-06-20 21:37
Croson
Rank: 1
等 级:新手上路
帖 子:12
专家分:7
注 册:2016-2-1
收藏
得分:0 
*(*(a+1)+j)即a[1][j]
2016-06-20 23:12
快速回复:printf中的表达式*(*(a+1)+j)该怎么翻译成中文步骤
数据加载中...
 
   



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

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