请大师详细讲解一下,谢谢啦!#include<stdio.h> void findmax(int *s,int t,int *k) { int p;
答案:4 悬赏:30 手机版
解决时间 2021-04-07 05:35
- 提问者网友:咪咪
- 2021-04-06 19:41
请大师详细讲解一下,谢谢啦!#include<stdio.h> void findmax(int *s,int t,int *k) { int p;
最佳答案
- 五星知识达人网友:春色三分
- 2021-04-06 20:52
准确地说,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自己查资料吧
值传递简单的可以认为传进来的是一个普通变量,指针传递可以理解为传进来的是个指针变量。
值传递的特点是,在函数内,对参数变量的值进行修改,不影响到函数外
例如
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自己查资料吧
全部回答
- 1楼网友:零点过十分
- 2021-04-06 23:30
你就不知道自己动手试一下吗?
- 2楼网友:轮獄道
- 2021-04-06 21:52
4 98
0 12
0 12
- 3楼网友:梦中风几里
- 2021-04-06 21:30
你的问题是对指针和引用没有弄明白,其实指针和应用都是对原来的内存进行的操作。&k和k的区别在于,&k对你传入的参数进行了操作,而k只是将你的实参的值赋给了k,真正操作的是k。原来的实参并没有发生变化。希望楼主能懂
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯