请大师详细讲解一下,谢谢啦!#include<stdio.h> void findmax(int *s,int t,int *k) { int p;

!#include<stdio.h>voidfindmax(int*s,intt,int*k){intp;for(p=0,*k=p;p<t;p++)if(s[p]>s[*... !#include<stdio.h>
void findmax(int *s,int t,int *k)
{
int p;
for(p=0,*k=p;p<t;p++)
if(s[p]>s[*k])
*k=p;
}
void main()
{
int a[10]={12,34,21,56,98,67,58,48,19,37};
int i,k;
findmax(a,10,&k);
printf("%d, %d\n", k,a[k]);
} 问题1:输出结果是多少?问题2:若将void findmax(int *s,int,int *k)中的*k改为K,findmax(a,10,&k)中的&k改为k,则程序的输出结果为多少?
展开
 我来答
召走刀文
2012-10-16 · TA获得超过1204个赞
知道小有建树答主
回答量:597
采纳率:57%
帮助的人:243万
展开全部
准确地说,LZ没有搞清楚函数参数的传递方式。C语言中,函数参数的传递方式有两种,值传递和指针传递(C++多了个引用传递)
值传递简单的可以认为传进来的是一个普通变量,指针传递可以理解为传进来的是个指针变量。
值传递的特点是,在函数内,对参数变量的值进行修改,不影响到函数外
例如
void set(int a){
a = 2;
}
void main(){
int a = 1;
set(a); //虽然在函数里改变a,但是在main中a的值仍然是1
}
指针传递就不一样了
void set(int *a){
*a = 2;
}
void main(){
int a = 1;
set(&a); //函数里的改变影响到main中a的值,此时a为2
}
至于为什么,这就关系到作用域,本质上是指针和内存的相关知识了,建议LZ自己查资料吧
love寒忆
2012-10-16 · TA获得超过360个赞
知道小有建树答主
回答量:375
采纳率:0%
帮助的人:262万
展开全部
你的问题是对指针和引用没有弄明白,其实指针和应用都是对原来的内存进行的操作。&k和k的区别在于,&k对你传入的参数进行了操作,而k只是将你的实参的值赋给了k,真正操作的是k。原来的实参并没有发生变化。希望楼主能懂
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
wang11chuang
2012-10-16 · TA获得超过109个赞
知道答主
回答量:97
采纳率:0%
帮助的人:23.1万
展开全部
4 98
0 12
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
zergfoggy
2012-10-15
知道答主
回答量:36
采纳率:0%
帮助的人:20.6万
展开全部
你就不知道自己动手试一下吗?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式