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

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

C语言关于指针的问题

正在回答

代码语言

1 回答

结果是-12.

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

代码如下:

1
2
3
4
5
6
7
8
9
10
#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;
 }
1
<br>

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

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下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号