指针
#include <stdio.h>int main()
{
int a[] = { 1,2,3,2,1 };
int *p, i = 1, s = 0;
for (p = a; p<a + 5; p++)
{
i *= *p;
s += *p;
}
printf("%d\t%d\n", i, s);
return 0;
}
这个(p = a; p<a + 5; p++)怎么理解的,a的值是多少?p<a+5怎么算的? 指针从a的第一个地址开始,即从a开始,到a+5,每次加1 本帖最后由 乐乐学编程 于 2020-10-20 16:46 编辑
你要的全部答案在程序里,运行试试看
#include <stdio.h>
int main()
{
int a[] = { 1,2,3,2,1 };
int *p, i = 1, s = 0;
for (p = a; p<a + 5; p++)
{
i *= *p;
s += *p;
}
printf("%d\t%d\n", i, s);
printf("数组的首地址是:%p\n",a); // 输出数组的首地址
printf("数组第一个元素的首地址是:%p\n",a); // 输出数组第1个元素的地址
printf("数组第5个元素的地址是:%p\n",a+5); // 输出数组第5个元素的地址
printf("结论:数组的首地址就是数组第1个元素的地址,");
printf("5个元素共占20个字节,每个元素占4个字节\n");
return 0;
} 乐乐学编程 发表于 2020-10-20 16:19
指针从a的第一个地址开始,即从a开始,到a+5,每次加1
这个程序怎么到了三就不加呢? 乐乐学编程 发表于 2020-10-20 16:31
你要的全部答案在程序里,运行试试看
运行结果是乱码{:5_100:} 乐乐学编程 发表于 2020-10-20 16:19
指针从a的第一个地址开始,即从a开始,到a+5,每次加1
懂了懂了 本帖最后由 乐乐学编程 于 2020-10-20 16:43 编辑
1447391641 发表于 2020-10-20 16:31
这个程序怎么到了三就不加呢?
i = 1* 1 s = 0 + 1
i = 1 * 2 s = 1 + 2
i = 2 * 3 s = 3 + 3
i = 6 * 2 s = 6 + 2
i = 12 * 1 s = 8 + 1
输出 i =12 输出 s = 9
与运行的结果一样,怎么到了3就不加了?
乐乐学编程 发表于 2020-10-20 16:31
你要的全部答案在程序里,运行试试看
p<a + 5就跟p=a + 5一样呗就是 1447391641 发表于 2020-10-20 16:39
懂了懂了
懂了,就给个最佳答案,系统会给我奖励,不需要付出什么 乐乐学编程 发表于 2020-10-20 16:44
懂了,就给个最佳答案,系统会给我奖励,不需要付出什么
嗯嗯,第一次用,抱歉。 乐乐学编程 发表于 2020-10-20 16:40
i = 1* 1 s = 0 + 1
i = 1 * 2 s = 1 + 2
i = 2 * 3 s...
哦哦,我还以为下面出来的这个是结果乱码 1447391641 发表于 2020-10-20 16:48
哦哦,我还以为下面出来的这个是结果乱码
那是我给你解释,程序是怎么运行的
我在你的程序里加了几条代码,是为了帮助你理解 乐乐学编程 发表于 2020-10-20 16:56
那是我给你解释,程序是怎么运行的
我在你的程序里加了几条代码,是为了帮助你理解
好的懂了,谢谢~
页:
[1]