int m[20].*p=&m[5].*q=m+17.n. n=p-q;求n的值

来源:6-7 字符串与数组

ExodusHT

2016-12-08 19:29

C语言关于指针的问题

写回答 关注

1回答

  • grytony
    2016-12-10 16:58:19

    结果是-12.

    -------------

    代码如下:

    #include <stdio.h>
    int main()
    {
     int m[20] = { 0,0 };
      int *p = &m[5];
     int *q = m + 17;
     int n = p - q;
      printf("%d", n);
     return 0;
     }

    ---------------   

    int m[20].*p=&m[5].*q=m+17.n. n=p-q;求n的值

    这是一道关于数组指针的题。我们逐步分析。

    首先定义了长度为20的整型数组m,接着定义整型指针p指向m的第6个元素m[5],此时p中存储着m[5]的地址。

    接着定义q,并对p进行指针加减。我们知道,指针加减法中,加减的是元素个数而非地址本身。

    又因为q=m+17,我们知道数组中m[],当数组名m单独出现时,其含义为数组m的第一个元素即m[0]。此题的精妙之处就在此。

    因此q为第(0+17)个元素的地址,即m[17]的地址。

    p与q相减,得到(-12)个元素。

    答案为-12.


C语言入门

C语言入门视频教程,带你进入编程世界的必修课-C语言

926206 学习 · 20797 问题

查看课程

相似问题