资讯

精准传达 • 有效沟通

从品牌网站建设到网络营销策划,从策略到执行的一站式服务

c语言返回引用函数 c语音函数返回值

C语言中 关于返回值 谁能具体讲一下 ?

你这个问题很笼统

创新互联长期为成百上千家客户提供的网站建设服务,团队从业经验10年,关注不同地域、不同群体,并针对不同对象提供差异化的产品和服务;打造开放共赢平台,与合作伙伴共同营造健康的互联网生态环境。为上林企业提供专业的做网站、网站建设上林网站改版等技术服务。拥有十多年丰富建站经验和众多成功案例,为您定制开发。

我就大概说下返回值的东东吧

在C语言里面所谓返回值是说一个函数当他执行到return的时候他会停止执行下面的语句向引用他的地方传递一个值

下面举例子说明

int

pp(void

//那个int就代表返回值的类型

{

……

return

0;

//这个就代表给执行pp这个函数的地方返回int类型的0

}

如果在主函数中有一句a=pp();那么等号右边就等于int

类型的0

,如果a是int类型那么a就等于0

return后面还可以接表达式

int

kk(int

a,int

c)

{

return

a+c;

//这个就代表给执行pp这个函数的地方返回a+c的结果

}

如果调用的地方写int

k;

k=kk(3,4);那么结果就是k等于7

当然返回值类型不是只有int

还可以有char

float那些和结构体类型

如果你不需要返回的时候可以写void

kk(void){}这样就不会返回了

但是如果你是写

kk(void){}没有前面的void默认是给你在前面补上int的而不是无返回值

还有什么问题你再追问吧

c语言,返回函数的三种方法,请解释明白点,有例子更好了?

函数参数和

返回值

三种传递方式:值传递、指针传递和引用传递

引用与指针的比较

引用是

C++中的概念,初学者容易把引用和指针混淆一起。一下程序中,n

是m

的一个引用(

reference

),m

是被引用物(referent)。

int

m;

int

n

=

m;

n

相当于m

的别名(绰号),对n

的任何操作就是对m

的操作。所以n

既不是m

的拷贝,也不是指向m

的指针,其实n

就是m

它自己。

C++语言

中,函数的参数和返回值的传递方式有三种:值传递、指针传递和引用传递。

以下是“值传递”的示例程序。由于Func1

函数体内的x

外部变量

n

的一份拷贝,改变x

的值不会影响n,

所以n

的值仍然是0。

void

Func1(int

x)

{

x

=

x

+

10;

}

int

n

=

0;

Func1(n);

cout

“n

=

n

endl;

//

n

=

以下是“指针传递”的示例程序。由于Func2

函数体内的x

是指向外部变量n

的指针,改变该指针的内容将导致n的值改变,所以n

的值成为10。

void

Func2(int

*x)

{

(*

x)

=

(*

x)

+

10;

}

int

n

=

0;

Func2(n);

cout

“n

=

n

endl;

//

n

=

10

以下是“引用传递”的示例程序。由于Func3

函数体内的x

是外部变量n

的引用,x

和n

是同一个东西,改变x

等于改变n,所以n

的值成为10。

void

Func3(int

x)

{

x

=

x

+

10;

}

int

n

=

0;

Func3(n);

cout

“n

=

n

endl;

//

n

=

10

对比上述三个示例程序,会发现“引用传递”的性质象“指针传递”,而书写方式象“值传递”。实际上“引用”可以做的任何事情“指针”也都能够做,为什么还要“引用”这东西?

答案是“用适当的工具做恰如其分的工作”。

C语言中关于函数返回值为引用的问题!!!

引用好像不是这么用的。。。

引用是作为函数的参数,传递给函数,这样函数就可以操作外部的变量。

返回值是指针。声明为 int *whw(int a, int b),在里面return。

引用的用法是:int whw(int a, int b)。

请问c语言中引用怎样理解?

1、引用的理解

引用是引入了对象的一个同义词。定义引用的表示方法与定义指针相似,只是用代替了*。

例如: Point pt1(10,10);

Point pt2=pt1; 定义了pt2为pt1的引用。通过这样的定义,pt1和pt2表示同一对象。

需要特别强调的是引用并不产生对象的副本,仅仅是对象的同义词。因此,当下面的语句执行后:

pt1.offset(2,2);

pt1和pt2都具有(12,12)的值。

引用必须在定义时马上被初始化,因为它必须是某个东西的同义词。你不能先定义一个引用后才

初始化它。例如下面语句是非法的:

Point pt3;

pt3=pt1;

2、引用的两个主要用途

作为函数参数以及从函数中返回左值。

(1)引用参数

a、传递可变参数

传统的c中,函数在调用时参数是通过值来传递的,这就是说函数的参数不具备返回值的能力。所以在传统的c中,如果需要函数的参数具有返回值的能力,往往是通过指针来实现的。比如,实现两整数变量值交换的c程序如下:

void swapint(int *a,int *b)

{

int temp;

temp=*a;

a=*b;

*b=temp;

}

使用引用机制后,以上程序的c++版本为:

void swapint(int a,int b)

{

int temp;

temp=a;

a=b;

b=temp;

}

调用该函数的c++方法为:swapint(x,y); c++自动把x,y的地址作为参数传递给swapint函数。

b、给函数传递大型对象

当大型对象被传递给函数时,使用引用参数可使参数传递效率得到提高,因为引用并不产生对象的副本,也就是参数传递时,对象无须复制。下面的例子定义了一个有限整数集合的类:

const maxCard=100;

Class Set

{

int elems[maxCard]; // 集和中的元素,maxCard 表示集合中元素个数的最大值。

int card; // 集合中元素的个数。

public:

Set () {card=0;} //构造函数

friend Set operator * (Set ,Set ) ; //重载运算符号*,用于计算集合的交集 用对象作为传值参数

// friend Set operator * (Set ,Set ) 重载运算符号*,用于计算集合的交集 用对象的引用作为传值参数

...

}

先考虑集合交集的实现

Set operator *( Set Set1,Set Set2)

{

Set res;

for(int i=0;iSet1.card;++i)

for(int j=0;jSet2.card;++j)

if(Set1.elems[i]==Set2.elems[j])

{

res.elems[res.card++]=Set1.elems[i];

break;

}

return res;

}

由于重载运算符不能对指针单独操作,我们必须把运算数声明为 Set 类型而不是 Set * 。每次使用*做交集运算时,整个集合都被复制,这样效率很低。我们可以用引用来避免这种情况。

Set operator *( Set Set1,Set Set2)

{ Set res;

for(int i=0;iSet1.card;++i)

for(int j=0;jSet2.card;++j)

if(Set1.elems[i]==Set2.elems[j])

{

res.elems[res.card++]=Set1.elems[i];

break;

}

return res;

}

2、引用返回值

如果一个函数返回了引用,那么该函数的调用也可以被赋值。这里有一函数,它拥有两个引用参数并返回一个双精度数的引用:

double max(double d1,double d2)

{

return d1d2?d1:d2;

}

由于max()函数返回一个对双精度数的引用,那么我们就可以用max() 来对其中较大的双精度数加1:

max(x,y)+=1.0;

扩展资料

使用c语言中引用的原因

程序按功能划分可分为数值运算、符号处理和I/O操作三类,符号处理程序占相当大的比例,符号处理程序无处不在,编译器、浏览器、Office套件等程序的主要功能都是符号处理。

在程序中通过对函数的调用来执行函数体,其过程与其它语言的子程序调用相似。

C语言中,函数调用的一般形式为:

函数名(实际参数表)

对无参函数调用时则无实际参数表。实际参数表中的参数可以是常数、变量或其它构造类型数据及表达式。各实参之间用逗号分隔。字符函数引用即对引用有关库函数或自定义函数函数。

参考资料:百度百科——字符函数引用


标题名称:c语言返回引用函数 c语音函数返回值
文章链接:http://cdkjz.cn/article/ddoghjh.html
多年建站经验

多一份参考,总有益处

联系快上网,免费获得专属《策划方案》及报价

咨询相关问题或预约面谈,可以通过以下方式与我们联系

大客户专线   成都:13518219792   座机:028-86922220