C语言for(p=a[0];p<a[0]+12;p++) {if((p-a[0])%4==0)printf("\n");这两个能帮我解释一下是怎么算的
答案:1 悬赏:50
解决时间 2021-02-17 02:54
- 提问者网友:嘚啵嘚啵
- 2021-02-16 09:16
C语言for(p=a[0];p<a[0]+12;p++) {if((p-a[0])%4==0)printf("\n");这两个能帮我解释一下是怎么算的
最佳答案
- 二级知识专家网友:往事埋风中
- 2021-02-16 10:45
二维数组其实就是一维数组,元素一个一个顺序往后排,p指向a[0],然后每次往后移动
一个位置,当(p-a[0])%4,也就是说输出了四个元素时,就输出换行符,四个元素也就是a[3][4],,第二维的值。其实和下面这2层循环是一样的:
for(int i=0;i<3;++i)
for(int j=0;j<4;++j)
printf("%4d",a[i][j]);
print("\n");追答
追问:(p-a[0])%4这个语句不是如果p-a【0】除于4后等于0的话就输出换行符是吗
追答:p是指针,p-a[0]是指p相对于a第一个元素的位置,这个不是除,是取余操作
10%4,意思是10除以4的余数,也就是2
(p-a[0])%4,当(p-a[0])是4的整数倍时,结果为0
追问:那p不是被赋值a【0】了吗?p-a【0】的话不就是等于0了吗?0除以4不是等于0吗,然后0等于0就输出换位符,接下去p是a【1】的地址执行减去a【0】再除以4不等于0就不输出换行符
追答:是的
追问:哦!我想出来了,是a【0】到a【12】里面的数字除以4,没有余数就换行,是不是
追答:不是,每4个数字换行一次,和a的内容没有关系,因为P是地址,而不是取地址中的内容
一个位置,当(p-a[0])%4,也就是说输出了四个元素时,就输出换行符,四个元素也就是a[3][4],,第二维的值。其实和下面这2层循环是一样的:
for(int i=0;i<3;++i)
for(int j=0;j<4;++j)
printf("%4d",a[i][j]);
print("\n");追答
追问:(p-a[0])%4这个语句不是如果p-a【0】除于4后等于0的话就输出换行符是吗
追答:p是指针,p-a[0]是指p相对于a第一个元素的位置,这个不是除,是取余操作
10%4,意思是10除以4的余数,也就是2
(p-a[0])%4,当(p-a[0])是4的整数倍时,结果为0
追问:那p不是被赋值a【0】了吗?p-a【0】的话不就是等于0了吗?0除以4不是等于0吗,然后0等于0就输出换位符,接下去p是a【1】的地址执行减去a【0】再除以4不等于0就不输出换行符
追答:是的
追问:哦!我想出来了,是a【0】到a【12】里面的数字除以4,没有余数就换行,是不是
追答:不是,每4个数字换行一次,和a的内容没有关系,因为P是地址,而不是取地址中的内容
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯