重庆分公司,新征程启航

为企业提供网站建设、域名注册、服务器等服务

c语言怎么返回自定义函数 c语言怎么返回某一步

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

函数参数和

创新互联公司成都企业网站建设服务,提供成都网站制作、成都网站建设网站开发,网站定制,建网站,网站搭建,网站设计,响应式网站建设,网页设计师打造企业风格网站,提供周到的售前咨询和贴心的售后服务。欢迎咨询做网站需要多少钱:18980820575

返回值

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

引用与指针的比较

引用是

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语言数组怎么返回自定义函数

//一、由函数参数带回固定的二维数组

void func(int ppout[][2])

{

ppout[0][0] = 1;

ppout[0][1] = 2;

ppout[1][0] = 3;

ppout[1][1] = 4;

}

int _tmain(int argc, _TCHAR* argv[])

{

int pp[2][2];

func(pp);

cout pp[0][0] pp[0][1] endl;

cout pp[1][0] pp[1][1] endl;

system("pause"); //让窗口暂停,便于看结果

return 0;

}

//二、由函数参数带回动态二维数组

void func(int** pp, int rows, int columns)

{

int i, j;

for (i = 0; i rows; i++)

{

for (j = 0; j columns; j++)

{

pp[i][j] = (i + 1) * 10 + j + 1;

}

}

}

int _tmain(int argc, _TCHAR* argv[])

{

int rows = 3, columns = 2;

int** pp;

int i, j;

//申请内存

pp = new int*[rows];

for (j = 0; j rows; j++)

pp[j] = new int[columns];

func(pp, rows, columns);

for (i = 0; i rows; i++)

{

for (j = 0; j columns; j++)

{

cout pp[i][j] " ";

}

cout endl;

}

//释放内存

for (j = 0; j rows; j++)

delete[] pp[j];

delete[] pp;

system("pause"); //让窗口暂停,便于看结果

return 0;

}

//如果非要从函数的返回值中带回二维数组,这是最好的方式

//三、由函数带回动态二维数组

int** func(int rows, int columns)

{

int i, j;

int** pp;

//申请内存

pp = new int*[rows];

for (j = 0; j rows; j++)

pp[j] = new int[columns];

for (i = 0; i rows; i++)

{

for (j = 0; j columns; j++)

{

pp[i][j] = (i + 1) * 10 + j + 1;

}

}

return pp;

}

int _tmain(int argc, _TCHAR* argv[])

{

int rows = 3, columns = 2;

int** pp;

int i, j;

pp = func(rows, columns);

for (i = 0; i rows; i++)

{

for (j = 0; j columns; j++)

{

cout pp[i][j] " ";

}

cout endl;

}

//释放内存

for (j = 0; j rows; j++)

delete[] pp[j];

delete[] pp;

system("pause"); //让窗口暂停,便于看结果

return 0;

}

//四、由函数带回二维数组

//这种方式有问题,程序中已经说明,不要采取此方式

const int rows = 3, columns = 2;

int (*func())[columns]

{

int i, j;

static int pp[rows][columns]; //如果不是静态的,函数退出后其内存就变得无效。

for (i = 0; i rows; i++)

{

for (j = 0; j columns; j++)

{

pp[i][j] = (i + 1) * 10 + j + 1;

}

}

return pp;

}

int _tmain(int argc, _TCHAR* argv[])

{

int (*pp)[columns];

int i, j;

//pp = new (int[columns]*)[rows];

pp = func();

for (i = 0; i rows; i++)

{

for (j = 0; j columns; j++)

{

cout pp[i][j] " ";

}

cout endl;

}

system("pause"); //让窗口暂停,便于看结果

return 0;

}

C语言自定义函数返回值的问题

你调用了a()之后,函数a()会返回一个5,但你没有将其返回值保存起来,所以这个返回值会被抛弃。要么用一个变量将函数a的返回值保存起来:int b=a(),要么将函数的返回值作为另一个函数的参数输入:printf("%d",a())。

C语言,自定义函数 中number的值如何返回主函数?

首先你是想把字符串number当做返回值返回,这个想法是可以的,但是你需要了解几个知识:

1. 局部变量占用的空间在函数返回之后就销毁了,你如果想返回字符串指针number,需要先malloc动态申请内存,这样number的空间就不会被销毁。

2. 你的函数返回值和函数定义不匹配,定义中是char,而number是char*类型,所以你如果想动态申请内存,然后返回指针,就把函数定义改为char*。

3. 主函数中%c是打印字符,如果打印字符串是%s。

还有一个办法是把number字符串指针作为函数参数传入,在主函数中定义一个number字符串,调用这个函数并传入number,就可以对number字符串修改了,这个办法无需显式的返回值。


本文标题:c语言怎么返回自定义函数 c语言怎么返回某一步
文章链接:http://cqcxhl.cn/article/doeegpo.html

其他资讯

在线咨询
服务热线
服务热线:028-86922220
TOP