C语言中,这两道题有区别吗?分别是对的还是错的?为什么? 50
2个回答
展开全部
第三个是错的,就算以指针为参数,如果你传入的是一个指针,那也是相当于传入指针的拷贝,相当于按值传递。比如
#include<stdio.h>
int quan=100;
void change(int * p)//指针参数
{
p=quan;
}
int main()
{ int a=9;
int *pi=&a;
change(pi);//以指针作为变量,传入的是指针p的一份拷贝,相当于指针pi的值传递给函数中的p,而p与pi都是指向变量的,在函数中修改了p,而并没有修改pi。
printf("%d\n",*p);//所以输出仍然是9
return 0;
}
第五个也是错的吧,说的很混乱,返回函数中处理的数据,这个不假,什么叫此时函数传递。
还是以上面函数为例
int change(int * p)//指针参数,返回int类型
{
p=quan;
return *p;
}
在main中要定义参数接受返回值,是按值传递的 int f=change(p);
int * change(int * p)//指针参数,返回int指针类型
{
p=quan;
return p;
}
在main中还是要定义参数接受返回值,也是按值传递的 int *f=change(p);
#include<stdio.h>
int quan=100;
void change(int * p)//指针参数
{
p=quan;
}
int main()
{ int a=9;
int *pi=&a;
change(pi);//以指针作为变量,传入的是指针p的一份拷贝,相当于指针pi的值传递给函数中的p,而p与pi都是指向变量的,在函数中修改了p,而并没有修改pi。
printf("%d\n",*p);//所以输出仍然是9
return 0;
}
第五个也是错的吧,说的很混乱,返回函数中处理的数据,这个不假,什么叫此时函数传递。
还是以上面函数为例
int change(int * p)//指针参数,返回int类型
{
p=quan;
return *p;
}
在main中要定义参数接受返回值,是按值传递的 int f=change(p);
int * change(int * p)//指针参数,返回int指针类型
{
p=quan;
return p;
}
在main中还是要定义参数接受返回值,也是按值传递的 int *f=change(p);
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询