#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个赞
逐行分析如下:
初始化,指针s指向 数组a的首地址;
fun调用中,查看fun的定义,为传值赋给参数。
故此处p1指向数组a的首地址,p2指向数组b的首地址,(fun的局部变量)指针s指向a的首地址
通过malloc,s被重新重新赋值新的内存地址,即s指向新的位置
(fun的局部变量)指针s指向的位置,存入 对应的值;
在main中的指针s仍指向数组a的首地址,故打印s指向的值,1
Stardust1001
TA贡献261条经验 获得超78个赞
fun()函数里面的*s=*p1+(*p2++);这一句里面,用的是*s,而不是s,s是个指针,*s不是指针,所以fun()函数里面更改*s不会影响main()里的s,也就不会影响main()里的*s
- 4 回答
- 0 关注
- 2143 浏览
添加回答
举报
0/150
提交
取消