int m[20].*p=&m[5].*q=m+17.n. n=p-q;求n的值
C语言关于指针的问题
C语言关于指针的问题
2016-12-08
结果是-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.
举报