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

2025-01-19 13:07:39
推荐回答(3个)
回答(1):

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

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

回答(2):

#include
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的地址值,那是不可能的,只能改变这个地址里的值!!!

回答(3):

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