C语言函数参数含有指针,C语言指针参数

c语言中用指针变量做函数参数有什么意义?

看你的需要了,有时不用指针作为参数达不到你要的效果,比如一个swap()函数。

创新互联建站-专业网站定制、快速模板网站建设、高性价比且末网站开发、企业建站全套包干低至880元,成熟完善的模板库,直接使用。一站式且末网站制作公司更省心,省钱,快速模板网站建设找我们,业务覆盖且末地区。费用合理售后完善,10余年实体公司更值得信赖。

int

swap(int

a,int

b)

{

int

tmp;

tmp=a;

a=b;

b=tmp;

}

如果你想调用该函数交换两个变量的值,在主函数中输出,那是不可能的。比如这样调用:

int

x=1,y=2;

swap(x,y);

printf("%d

%d",x,y);

你认为会输出2

1吗?错!还是会输出1

2的。因为传入swap()函数的只是x,y的拷贝,而不是它们自身。

如果要真正达到交换的目的,就要用指针传值。这样定义函数:

void

swap(int

*a,int

*b)

{

int

tmp;

tmp=*a;

*a=*b;

*b=tmp;

}

但是给函数传值时要注意,指针是指向地址的,所以参数要是地址,即需要给变量取地址。

int

x=1,y=2;

swap(x,y);

printf("%d

%d",x,y);

这样就是输出2

1了!

C语言指针作为函数参数

#include stdio.h

int *fmax(int *,int *);    /*函数的声明和下面的定义参数类型不一致,应该改成指针类型*/

void main()

{

int x,y;int *c,*d;

int *pmax;

scanf("%d%d",x,y);

c=x;

d=y;

pmax=fmax(c,d);

printf("max=%d\n",*pmax);

printf("max=%d\n",*pmax);

}

int *fmax(int *a,int *b)

{

int *p;

p=*a*b?a:b;

return p;

}

C语言用指针作函数参数

选D

因为第一个参数是地址传递,fun(b,a);中传入a字符。*c=*c+1将c的值变为b字符。主函数的值改变。

第二个参数是值传递,所以在函数中d的值为B字符。但是并不影响主函数的值,所以主函数输出a的值是A。b的值是b。

C语言的指针作函数参数

改成下面代码看看:

#include stdio.h

void abc(int *i,int *j)

{

int m;

m=*i; //指针变量的值也就是地址不能赋值给一般变量

*i=*j;//*i,*j才是指针变量指向的变量的值

*j=m;   

}

void main()

{

int a,b;

int *pa=a,*pb=b;

printf("请输入a,b的值:");

scanf("%d,%d",a,b);

abc(pa,pb);  //

printf("a=%d\tb=%d\n",a,b);

}

c语言中函数指针作为参数与函数的嵌套

您好,针对这个问题

Status

InOrderTraverse(BiTree

T

,Status(*Visit)(TElemType

e))函数中第2个参数是一个指向函数的指针,这样做的目的是为了程序的灵活性。试想如果给你一个整型数100,要求分别按照10进行、16进制输出,你可以写一个输出10进制函数与输出16进制函数,当你有需要输出16进制时,只需要将16进制函数地址传给Visit就行,而不需要改变InOrderTraverse函数,这种做法灵活,也符合软件工程编程思想。

另外,InitStack(S);

就是函数调用,这种就在InOrderTraverse已经写死了,如果有几种初始化情况的话,就得在InOrderTraverse增加判断条件来加以区分,这样增加了代码量。

希望我的回答对您帮助!

C语言函数里的参数是指针的问题

函数定义和函数调用是两个概念,函数定义 为f(int *arr),表示参数是一个整型指针,因此使用该函数时要传递一个地址,如变量int a=0; 调用函数f传递a的地址时需要写为f(a);而对于数组来说,如int b[]=[1,2,3], b本身就是数组首元素的地址,因此调用函数f传递数组首地址需要写为f(b)。

分享文章:C语言函数参数含有指针,C语言指针参数
链接地址:https://www.cdcxhl.com/article26/dsejsjg.html

成都网站建设公司_创新互联,为您提供定制网站Google网站建设网站设计微信公众号关键词优化

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联

搜索引擎优化