首页 >>  正文

c语言中怎么就可以知道是按值传递还是地址传递?

来源:www.zuowenzhai.com    作者:编辑   日期:2024-06-03
c语言中怎么可以知道是按值传递还是地址传递

C语言中全部都是按值传递的。必要时只要用指针传递地址,就可以起到按地址传递的效果。

地址传递一般都是跟指针有关的,当然,在传递数组的时候,也是属于地址传递,因为数组名本身是一个地址;值传递,一般就是普通的变量传递。
楼主关键是要分清所传传递的变量的具体含义是什么。

通过参数类型即可得知。
按值传递和地址传递均为函数参数上的说法,即实参传值到形参的方式。
其规则为
对于传递类型为TYPE时:
1 如果参数类型为TYPE,那么就是按值传递。
2 如果参数类型为TYPE *型,那么就是按地址传递。
3 如果参数类型为TYPE*以上的指针,如TYPE**, TYPE***等,一样按照按地址传递处理。

需要注意的是,TYPE本身可能为指针类型。
比如要传char *型时,如果参数本身为char *,那么就是传值;要传地址,需要用至少char **型。

#include<stdio.h>
void swap(int *a,int *b)
{
int t;
t=*a;*a=*b;*b=t;
}
void main()
{
int x=3,y=5,*p,*q;
p=&x;q=&y;
swap(&x,&y);
printf("%d %d",*p,*q);
}

你为什么不试试这个呢?
你的函数里用int *t;给你说了不能把内存的某个区域的地址改变了
t=a;a=b;b=t; 意思就是交换a,b的地址值,那是不可能的,只能改变这个地址里的值!!!

c语言中的地址传递其实还是值传递,传递的是值的内容就是地址,和普通值没什么区别


13565548631c语言 如何判断一个函数是值传递还是址传递啊?傻傻分不清楚,c语言起步...
邰茂康答:值传递,调用函数的时候传给调用函数的是变量的值,例如:定义 max函数:int max(int a,int b){ if(a>b) return a; else return b;}调用max函数的时候这样调用:int a=1;int b=2;int m;m = max(a,b); 址传递调用函数的时候传给调用函数的是变量的地址,例如:定义交换函数...

13565548631怎么区分C语言里的按值传递与按址传递??
邰茂康答:值传递就是普通用变量名就可以了。

13565548631C语言的函数调用中怎样判断是地址传递还是值传递?
邰茂康答:int,char,float,结构体,枚举,联合均为值传递;数组名,指针,引用均为地址传递;比如 func(int,char,float,struct S)值传递 func(int *,int a[],int &a)地址传递

13565548631C语言函数调用中怎么判断是地址传递还是值传递
邰茂康答:注意不能单单看是否为指针。要传递类型为A的值,如果参数类型是A*,那么为传地址,反之,如果参数类型是A,那么是传值。比如,要传递int型参数:1 传值:void func(int a);2 传地址:void func(int *a);而传递char *型参数。1 传值:void func(char *a);2 传地址:void func(char **a...

13565548631怎么分析函数是地址传递还是值传递,这道题为什么是地址传递 怎么看出 ...
邰茂康答:值传递只是将变量的内容传递,函数实际上是另一个变量在操作,然后返回该变量的内容。而地址传递是直接把变量的地址传递给函数,这时函数是直接对原来的变量进行操作的。简单的,你可以从有无return返回数值分辨。该图的b是传递地址并且把Qian 赋给b.name ...

13565548631c语言程序设计中哪些是按值传递,哪些是按地址传递?
邰茂康答:其实C语言中函数参数的传递 全 是 值传递 所谓的 地址 传递,只不过是程序员那么称呼他们而已 比如函数: int func(int input);如果我把 input当做普通值使用( 例如:printf("%d\n",input); )它就是一整形 如果我把 input当做一指针使用( 例如: *((int*)input) = 5; )它就是一指针,但是你...

13565548631JAVA基础问题,到底是值传递还是引用传递?
邰茂康答:java中方法参数传递方式是按值传递。所谓值传递,就是将实际参数值的副本(复制品)传入方法内,而自己本身不会受到任何影响。如果参数是基本类型,传递的是基本类型的字面量值的拷贝。如果参数是引用类型,传递的是该参量所引用的对象在堆中地址值的拷贝。

13565548631什么是按值传递,什么是按地址传递?
邰茂康答:指针相信学习编程的人都知道吧,那么看看下面的例子 按值传递时,实质上实参a只是把一个副本传递给形参x,也可以直接理解为传递的结果是让x*2中的x的值等于10(即a的值),乘以2后再赋值(赋值不用解释吧)给x,即实际上w方法的运算并没有对a本身进行操作。所以调用w方法前后a值始终等于10,而w...

13565548631在C语言中,函数实参与形参之间的数据传递方式是( )传递方式。_百度知 ...
邰茂康答:也就是我们所说的引用,但引用只有C++中有,所以C语言都是值传递的。有些人有误解:认为C语言的int *p=&a;不也是按地址传递吗?其实不是这样的。深入理解值传递与地址传递就会发现:值传递是:把实参的值传给一个变量(形参)。所以int *p=&a也是把a的地址值传给了指针变量p 地址传递是:直接把...

13565548631在C语言中,函数实参与形参之间的数据传递方式是( )传递方式。_百度知 ...
邰茂康答:函数实参与形参之间的数据传递方式是( 值传递)传递方式,在C语言中,数据传递方式有值传递和引用传递,值传递:传值,实际是把实参的值赋值给行参,相当于copy。那么对行参的修改,不会影响实参的值 。引用传递: 实际是传值的一种特殊方式,只是他传递的是地址,不是普通的赋值,那么传地址以后,...


(编辑:汤孙虏)
联系方式:
关于我们 | 客户服务 | 服务条款 | 联系我们 | 免责声明 | 网站地图
@ 作文摘要网