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

想问问这题答案为什么是1而不是11?

想问问这题答案为什么是1而不是11?

C C++
福工刘德华 2018-04-15 21:19:15
#include <stdio.h>#include <string.h>#include <conio.h>#include <stdlib.h>void fun(int *p1,int *p2,int *s){ s=(int*)malloc(sizeof(int)); *s=*p1+(*p2++);}main(){ int a[2]={1,2},b[2]={10,20},*s=a; fun(a,b,s); printf("%d\n",*s); getch();}
查看完整描述

4 回答

已采纳
?
MinRam

TA贡献87条经验 获得超24个赞

逐行分析如下:

  1. 初始化,指针s指向 数组a的首地址;

  2. fun调用中,查看fun的定义,为传值赋给参数。

    1. 故此处p1指向数组a的首地址,p2指向数组b的首地址,(fun的局部变量)指针s指向a的首地址

    2. 通过malloc,s被重新重新赋值新的内存地址,即s指向新的位置

    3. (fun的局部变量)指针s指向的位置,存入 对应的值;

  3. main中的指针s仍指向数组a的首地址,故打印s指向的值,1

查看完整回答
反对 回复 2018-04-16
?
Stardust1001

TA贡献261条经验 获得超78个赞

fun()函数里面的*s=*p1+(*p2++);这一句里面,用的是*s,而不是s,s是个指针,*s不是指针,所以fun()函数里面更改*s不会影响main()里的s,也就不会影响main()里的*s

查看完整回答
反对 回复 2018-04-15
  • 4 回答
  • 0 关注
  • 2071 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信