c语言中的指针与数组的问题
#include <stdio.h>int main()
{
int a={1,3,5,7,9,11,13,15,17,19,21,23};
int *p;
for(p=a;p<a+12;p++) //使p依次指向下一个元素
{
if((p-a)%4==0) //p移动4次后换行
printf("%4d",*p); //输出p指向的元素的值
}
printf("\n");
return 0;
}
为什么不是每次输出元素后换行,而是输出四个元素后换行?,求大佬解答 不怎么理解问题的描述,我运行出来,一共只有三个元素,还在同一行 他这题意思就是 第0位开始每到第4位输出
p=a //用一个指针,指向二维数组a, 注意了a 是指针类型
p<a+12 // 由于数组在内存中是连存放的,所以 后面的地址肯定比前面小, a+12 指的是23这个数后面的地址(a+11 是 23的地址)
(p-a)%4// p-a 返回的是几个int 不是 比如172-168 4个字节,而是1个int
beijudezixuan 发表于 2018-11-9 19:58
不怎么理解问题的描述,我运行出来,一共只有三个元素,还在同一行
打漏了,if语句后面还有printf("\n");
ba21 发表于 2018-11-9 20:17
他这题意思就是 第0位开始每到第4位输出
p=a //用一个指针,指向二维数组a, 注意了a 是指针 ...
已经明白了,原来if语句中的p-a的值不是直接地址相减,而是地址的差再除以元素长度 ba21 发表于 2018-11-9 20:17
他这题意思就是 第0位开始每到第4位输出
p=a //用一个指针,指向二维数组a, 注意了a 是指针 ...
其实在if语句括号后漏打了printf("\n");问题是为什么不是每输出一个元素后换行,而是输出四个元素后换行?
页:
[1]