为了账号安全,请及时绑定邮箱和手机立即绑定

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

C语言关于指针的问题

正在回答

1 回答

结果是-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.


0 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

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

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信