C语言函数调用中怎么判断是地址传递还是值传递
展开全部
根据参数类型以及函数实现的功能综合判断。
注意不能单单看是否为指针。
要传递类型为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);
同样是char *类型的参数,有可能是传值,也有可能是传地址。具体取决于函数实现功能。
注意不能单单看是否为指针。
要传递类型为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);
同样是char *类型的参数,有可能是传值,也有可能是传地址。具体取决于函数实现功能。
展开全部
在运用的过程中,如果是能够直接用的,如楼上的
void test2(int i) // 传值
{
}
中i是可以直接用的,就是值传递;
而
void test1(int * p) // 传地址
{
}
中需要取地址中的内容的,如需要*p来取所指向的值的,就是传地址。
void test2(int i) // 传值
{
}
中i是可以直接用的,就是值传递;
而
void test1(int * p) // 传地址
{
}
中需要取地址中的内容的,如需要*p来取所指向的值的,就是传地址。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
这是伪命题!在C里传递给形式参数的都是实参的“值拷贝”,没有传递实参地址的!有争议的可能就是指针的传递——其实,形参要求是指针,把实参所具有的地址“值”拷贝了一份赋给了形参,并没有传递实参指针变量的地址!
(201509240152答的)
看到相同意思的答案了,投诉应该。当时没有出现啊……
(201509240152答的)
看到相同意思的答案了,投诉应该。当时没有出现啊……
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
C里面就只有按值传递,其实没有按地址传递这一说,通常所说的按地址传递,也是传值,只不过传了一个复制的指针。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
C语言调用参数传递地址的话需要使用指针作为参数,如:
void test1(int * p) // 传地址
{
}
void test2(int i) // 传值
{
}
void test1(int * p) // 传地址
{
}
void test2(int i) // 传值
{
}
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询