1447391641 发表于 2020-10-20 16:14:39

指针

#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怎么算的?

乐乐学编程 发表于 2020-10-20 16:19:04

指针从a的第一个地址开始,即从a开始,到a+5,每次加1

乐乐学编程 发表于 2020-10-20 16:31:31

本帖最后由 乐乐学编程 于 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;
}

1447391641 发表于 2020-10-20 16:31:37

乐乐学编程 发表于 2020-10-20 16:19
指针从a的第一个地址开始,即从a开始,到a+5,每次加1

这个程序怎么到了三就不加呢?

1447391641 发表于 2020-10-20 16:36:46

乐乐学编程 发表于 2020-10-20 16:31
你要的全部答案在程序里,运行试试看

运行结果是乱码{:5_100:}

1447391641 发表于 2020-10-20 16:39:50

乐乐学编程 发表于 2020-10-20 16:19
指针从a的第一个地址开始,即从a开始,到a+5,每次加1

懂了懂了

乐乐学编程 发表于 2020-10-20 16:40:20

本帖最后由 乐乐学编程 于 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就不加了?

1447391641 发表于 2020-10-20 16:40:50

乐乐学编程 发表于 2020-10-20 16:31
你要的全部答案在程序里,运行试试看

p<a + 5就跟p=a + 5一样呗就是

乐乐学编程 发表于 2020-10-20 16:44:31

1447391641 发表于 2020-10-20 16:39
懂了懂了

懂了,就给个最佳答案,系统会给我奖励,不需要付出什么

1447391641 发表于 2020-10-20 16:48:01

乐乐学编程 发表于 2020-10-20 16:44
懂了,就给个最佳答案,系统会给我奖励,不需要付出什么

嗯嗯,第一次用,抱歉。

1447391641 发表于 2020-10-20 16:48:38

乐乐学编程 发表于 2020-10-20 16:40
i = 1* 1                s = 0 + 1
i = 1 * 2               s = 1 + 2
i = 2 * 3               s...

哦哦,我还以为下面出来的这个是结果乱码

乐乐学编程 发表于 2020-10-20 16:56:10

1447391641 发表于 2020-10-20 16:48
哦哦,我还以为下面出来的这个是结果乱码

那是我给你解释,程序是怎么运行的

我在你的程序里加了几条代码,是为了帮助你理解

1447391641 发表于 2020-10-20 16:57:19

乐乐学编程 发表于 2020-10-20 16:56
那是我给你解释,程序是怎么运行的

我在你的程序里加了几条代码,是为了帮助你理解

好的懂了,谢谢~
页: [1]
查看完整版本: 指针