2767184930 发表于 2020-12-25 00:20:34

作业题,求助

设有如下定义:

intarr[]={6,7,8,9,10};

int*ptr;

则下列程序的输出结果为______。

ptr=arr;

*(ptr+2)+=2;

printf("%d,%d\n",*ptr,*(ptr+2));
这题的程序是什么意思 啊

jackz007 发表于 2020-12-25 00:39:24

本帖最后由 jackz007 于 2020-12-25 11:40 编辑

      * (ptr + 2) 就是 arr
*(ptr+2)+=2;
      就是
arr = arr + 2
       同理
printf("%d,%d\n",*ptr,*(ptr+2));
       就是
printf("%d,%d\n",arr,arr);
       最后,会打印出 arr、arr 的值,整数 6 和 10 。

风过无痕1989 发表于 2020-12-25 00:44:40

#include<stdio.h>
int main()
{
        intarr[] = { 6,7,8,9,10 };          // 定义数组并赋初值

        int*ptr;                            // 定义指针变量

        ptr = arr;                            // 将数组的首地址赋给指针

        *(ptr + 2) += 2;                      // 指针指向第2个元素的值再加2,即 *(ptr + 2) = *(ptr + 2) + 2

        printf("%d,%d\n", *ptr, *(ptr + 2)); // 输出 6,10
}
页: [1]
查看完整版本: 作业题,求助