导航:首页 > 整形美容 > 返回数组整形数据怎么定义函数返回值

返回数组整形数据怎么定义函数返回值

发布时间:2021-02-19 07:08:43

㈠ 声明一个指向数组大小为10的指针,数组中的元素为返回值类型为整型指针的函数; 如何定义该指针

int (*(*p)[10])(int *)
首先题目说要声明一个数组指针, 一般我们想到的数组指针是 随便来一个 int(*p)[10], 然后又说每个元素是内一个函数指针,那么容我们便来一个 函数指针 int (*pf)(int *) . 然后把(*p)[10]作为一个整体替代 pf 即 int(*(*p)[10]))(int *); 分析: 判断一个复杂式子看最高优先级的,*p是一个指针,然后(*p)外面是[],所以是数组指针,(*p)[10])描述完毕,然后再看外面int(*)(int *)很明显,这是一个函数指针,所以这个数组中每个元素是函数指针

㈡ 为什么c语言中自定义一个整形函数没有返回值依然能运

在C中,正常情况下,我们只能从函数中返回一个值。但在有些情况下,我们需要从函数中返回多个值,此时使用数组或指针能够很好地完成这样的任务。这里是一
个示例,这个程序使用一个整型数组作为参数,并将数组元素的和与积返回给调用函数。下面是C代码,这是一种常见情况。下面给出实现技巧:

1.
#include

2.
#include

3. int*
Pool(int array[],int size)

4.
{

5.
int *x;

6.
int i=0;

7.
int
a[2]={0,1};

8.
for(i=0;i

9.
{

10.

a[0]+=array[i];
// 存储数组元素值的和

11.

a[1]*=array[i];
// 存储数组元素值的积

12.
}

13. //
将数组的基地址赋值给整型指针

14.
x=&a[0];

15. //
返回整个数组

16.
return x;

17. }

18.

19. int main()

20. {

21. int
a[]={1,2,3,4};

22. int
*c; c = Pool(a,4);

23.
printf("Sum = %d\nProct = %d\n",c[0],c[1]);

24.
getch();

25.
return 0;

26. }

这样,我们就知道如何使用数组和指针从C函数中返回多个值。在很多情况下你会发现这个技巧很有用。

㈢ 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语言自定义函数返回一个数组的问题

方法1:利用全局变量

分析:全局变量作为C语言的一个知识点,虽然我们都了解它的特点,但在实际教学过程中应用得并不是很多。由于全局变量的作用域是从定义变量开始直到程序结束,而对于编写有多个返回值的C语言函数,我们可以考虑把要返回的多个值定义成全局变量。当函数被调用时,全局变量被更改,我们再把更改后的全局变量值应用于主调函数中。函数被调用后被更改后的全局变量值即为函数的数个返回值。下面以一个实例演示该方法的应用。
实例1:编写函数求3个数中的最大值与最小值。
方法:把最大值、最小值分别定义成2个全局变量max、min,在用户自定义函数中把求出来的最大值与最小值分别赋给全局变量max、min。函数调用完毕后全局变量的max、min值即保存了函数要求返回的值。程序参考代码如下:
#include "stdio.h"
#include "conio.h"
int max,min;/*定义两个全局变量用于保存函数返回值*/
void max_min(int a,int b,int c) /*定义求最大最小值的函数*/
{max=min=a; /*初始化最大最小值*/
if(max if(max if(min>b)min=b;
if(min>c)min=c;
}
main()
{int x,y,z;
printf(" 请输入3个整数:\n");
scanf("%d,%d,%d",&x,&y,&z);
max_min(x,y,z) ;/*调用求最大值与最小值的函数*/
printf("三个数中的最大值为:%d;最小值为:%d",max,min);/*输出最大值与最小值*/
getch();
}
调试结果如下:
请输入3个整数:
5,-6,2
三个数中的最大值为:5;最小值为:-6
注意:该方法虽然可以实现有多个返回值的函数,但由于全局变量不能保证值的正确性(因为其作用域是全局,所以程序范围内都可以修改它的值,如果出现错误将非常难以发现),并且全局变量增加了程序间模块的耦合,所以该方法要慎用。

方法2:传递数组指针

分析:在教学过程中,我们知道C语言函数参数的传递方式有值传递与地址传递。当进行值传递时,主调函数把实参的值复制给形参,形参获得从主调函数传递过来的值运行函数。在值传递过程中被调函数参数值的更改不能导致实参值的更改。而如果是地址传递,由于传递过程中从实参传递过来的是地址,所以被调函数中形参值的更改会直接导致实参值的更改。因此,我们可以考虑把多个返回值作为数组元素定义成一个数组的形式,并使该数组的地址作为函数的形式参数,以传址方式传递数组参数。函数被调用后,形参数组元素改变导致实参改变,我们再从改变后的实参数组元素中获得函数的多个返回值。以下实例演示该方法的应用。
实例2:编写函数求一维整形数组的最大值与最小值,并把最大值与最小值返回给主调函数。
方法:以指针方式传递该一维数组的地址,然后把数组的最大值与数组的第一个元素交换,把数组的最小值与最后一个元素交换。函数被调用完毕后,实参数组中的第一元素为数组的最大值,实参数组中最后一个元素为数组的最小值,从而实现返回数组的最大值与最小值的功能。程序参考代码如下:
#include "stdio.h"
#include "conio.h"
void max_min(int *ptr,int n) /*定义求数组最大值最小值的函数,传递数组指针*/
{int i,j,k;/*j保存最大值所在位置,k保存最小值所在位置*/
int *temp;/*用于交换位置*/
*temp=*ptr;
for(i=0;i{
if(*ptr<*(ptr+i))/*最大值与第一个元素进行交换*/
{
k=i;
*temp=*ptr;
*ptr=*(ptr+k);
*(ptr+k)=*temp ;
}
if(*(ptr+n-1)>*(ptr+i))/*最小值与最后一个元素进行交换*/
{
j=i;
*temp =*(ptr+n-1);
*(ptr+n-1)=*(ptr+j);
*(ptr+j)= *temp ;}
}
}
/*调用最大最小值函数*/
main()
{
int A[6],i;
for(i=0;i<6;i++)
scanf("%d",&A[i]);
max_min(A,6);
printf("max=%d, min=%d\n \n",A[0],A[5]);
getch();
}
调试结果如下:
请输入6个整形数,以空格隔开:
5 8 9 32 -6 4
max=32,min=-6
注意:该方法适用于多个返回值的数据类型一致的情况。当返回值数据类型不一致时,不适用该方法。

㈤ C#里返回值为int类型数组的函数如何定义

int[] 实际上是一个类,它的基类是Array.实际上,所有的数组类型都是类,而且基类是Array.
int[] arr=new int[10],实际内上是创建了int[]这种类型的一个容对象,只是微软为了让大家习惯,就使用了类似C++的数组定义方式。
你的补充问题是不是这个意思:
arr = randques();
randques会返回一个int[]的数组
如果是这个意思的话,那么答案就是肯定的,因为返回值和 arr是同一种数据类型:int[]

㈥ java数组在自定义函数中返回值

public Num(int n)是构造函数,没有返回值。如果必须使用构造函数的话,可以考虑使用成员变量来保存和输出数组的值。代码如下:
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;

public class Num {

List<Integer> list = new ArrayList<>();

public static void main(String[] args) throws Throwable{
try(Scanner s = new Scanner(System.in)) {
System.out.println("输入个数");
int n = Integer.parseInt(s.nextLine());
Num li = new Num(n);
for(int i = 0; i < n; i++) {
s.nextLine();
System.out.println(li.list.get(i));
}
}
}
public Num(int n) {
for(int i = 0 ; i < n ; i++) {
list.add(n);
}
}
}

如果想使用函数的返回值来保存和输出数组的值,那可以使用普通的带有返回值的函数来实现。代码如下:
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;

public class Num {
public static void main(String[] args) throws Throwable{
try(Scanner s = new Scanner(System.in)) {
System.out.println("输入个数");
int n = Integer.parseInt(s.nextLine());
Num li = new Num();
List<Integer> list = li.NumSave(n);
for(int i = 0; i < n; i++) {
s.nextLine();
System.out.println(list.get(i));
}
}
}
public List<Integer> NumSave(int n) {
List<Integer> list = new ArrayList<>();
for(int i = 0 ; i < n ; i++) {
list.add(n);
}
return list;
}
}
麻烦看一下是否好用。

㈦ c语言中函数能返回一个数组吗

不能直接返回一个数组,但是可以用其他方式实现类似功能。
方法1:利用全局变量

分析:全局变量作为C语言的一个知识点,虽然我们都了解它的特点,但在实际教学过程中应用得并不是很多。由于全局变量的作用域是从定义变量开始直到程序结束,而对于编写有多个返回值的C语言函数,我们可以考虑把要返回的多个值定义成全局变量。当函数被调用时,全局变量被更改,我们再把更改后的全局变量值应用于主调函数中。函数被调用后被更改后的全局变量值即为函数的数个返回值。下面以一个实例演示该方法的应用。
实例1:编写函数求3个数中的最大值与最小值。
方法:把最大值、最小值分别定义成2个全局变量max、min,在用户自定义函数中把求出来的最大值与最小值分别赋给全局变量max、min。函数调用完毕后全局变量的max、min值即保存了函数要求返回的值。程序参考代码如下:
#include "stdio.h"
#include "conio.h"
int max,min;/*定义两个全局变量用于保存函数返回值*/
void max_min(int a,int b,int c) /*定义求最大最小值的函数*/
{max=min=a; /*初始化最大最小值*/
if(max if(max if(min>b)min=b;
if(min>c)min=c;
}
main()
{int x,y,z;
printf(" 请输入3个整数:\n");
scanf("%d,%d,%d",&x,&y,&z);
max_min(x,y,z) ;/*调用求最大值与最小值的函数*/
printf("三个数中的最大值为:%d;最小值为:%d",max,min);/*输出最大值与最小值*/
getch();
}
调试结果如下:
请输入3个整数:
5,-6,2
三个数中的最大值为:5;最小值为:-6
注意:该方法虽然可以实现有多个返回值的函数,但由于全局变量不能保证值的正确性(因为其作用域是全局,所以程序范围内都可以修改它的值,如果出现错误将非常难以发现),并且全局变量增加了程序间模块的耦合,所以该方法要慎用。

方法2:传递数组指针

分析:在教学过程中,我们知道C语言函数参数的传递方式有值传递与地址传递。当进行值传递时,主调函数把实参的值复制给形参,形参获得从主调函数传递过来的值运行函数。在值传递过程中被调函数参数值的更改不能导致实参值的更改。而如果是地址传递,由于传递过程中从实参传递过来的是地址,所以被调函数中形参值的更改会直接导致实参值的更改。因此,我们可以考虑把多个返回值作为数组元素定义成一个数组的形式,并使该数组的地址作为函数的形式参数,以传址方式传递数组参数。函数被调用后,形参数组元素改变导致实参改变,我们再从改变后的实参数组元素中获得函数的多个返回值。以下实例演示该方法的应用。
实例2:编写函数求一维整形数组的最大值与最小值,并把最大值与最小值返回给主调函数。
方法:以指针方式传递该一维数组的地址,然后把数组的最大值与数组的第一个元素交换,把数组的最小值与最后一个元素交换。函数被调用完毕后,实参数组中的第一元素为数组的最大值,实参数组中最后一个元素为数组的最小值,从而实现返回数组的最大值与最小值的功能。程序参考代码如下:
#include "stdio.h"
#include "conio.h"
void max_min(int *ptr,int n) /*定义求数组最大值最小值的函数,传递数组指针*/
{int i,j,k;/*j保存最大值所在位置,k保存最小值所在位置*/
int *temp;/*用于交换位置*/
*temp=*ptr;
for(i=0;i{
if(*ptr<*(ptr+i))/*最大值与第一个元素进行交换*/
{
k=i;
*temp=*ptr;
*ptr=*(ptr+k);
*(ptr+k)=*temp ;
}
if(*(ptr+n-1)>*(ptr+i))/*最小值与最后一个元素进行交换*/
{
j=i;
*temp =*(ptr+n-1);
*(ptr+n-1)=*(ptr+j);
*(ptr+j)= *temp ;}
}
}
/*调用最大最小值函数*/
main()
{
int A[6],i;
for(i=0;i<6;i++)
scanf("%d",&A[i]);
max_min(A,6);
printf("max=%d, min=%d\n \n",A[0],A[5]);
getch();
}
调试结果如下:
请输入6个整形数,以空格隔开:
5 8 9 32 -6 4
max=32,min=-6
注意:该方法适用于多个返回值的数据类型一致的情况。当返回值数据类型不一致时,不适用该方法

㈧ C程序自定义函数数组返回值

不用返回,在子函数处理后,直接使用就可以了。数组和指针差不多。看看《C专家编程》,就有答案了,呵呵

㈨ c语言自定义的函数如何返回一个数组

#include<stdio.h>
main()
{
float change(float array[3][3]);
float a[3][3];
int i,j;
for (i=0;i<3;i++)
for (j=0;j<3;j++)
scanf("%d",&a[i][j]);
change (a);
for (i=0;i<3;i++)
for (j=0;j<3;j++)
printf("%4d\n",a[i][j]);
}
float change(float array[3][3]) // 这里可以写出 array[][3]
{
float c[3][3];
int m,n;
for(m=0;m<3;m++)
for(n=0;n<3;n++)
c[n][m]=array[m][n];
for(m=0;m<3;m++)
for(n=0;n<3;n++)
arry[m][n]=c[m][n]; //不想改变你的程序,所以在这里修改。这样 arry在主函数中是可以访问的。版。权。不用返回了。
}

㈩ 我想用调用函数返回一个数组,返回值那里应该怎么写

返回数组是一复个很不制好的习惯,因为你无法真正的返回一个数组,而是返回一个指向数组首地址的指针。如果你真的需要一个数组应该这么做,
int func(int * array, int max);第1个参数是数组的首地址,比如你有int a[20], 那么就传a,不过必须先初始化,max表示你传入的数组的长度,即函数中对数组的操作不能超过max,否则越界,返回值是实际有效的数组元素个数。

阅读全文

与返回数组整形数据怎么定义函数返回值相关的资料

热点内容
35岁干性皮肤起痘用什么护肤品 浏览:290
深海娜美皮肤多少钱 浏览:532
正品减肥多少钱 浏览:837
蒙妮坦美容养生馆靖南店怎么样 浏览:417
兰州哪里有白癜风医院 浏览:50
做隆鼻哪里整形医院比较好 浏览:590
怎么测试皮肤的年龄呢 浏览:516
植藻水能量化妆品多少钱一瓶 浏览:350
赣州市皮肤病哪里最好的医院 浏览:741
晩上吃什么水果减肥 浏览:824
上海美容纹眉多少钱 浏览:506
汽车美容店换机油要什么证 浏览:196
八大处整形外科医院住哪里 浏览:612
化妆生产许可证号在哪里 浏览:212
中性皮肤适合用哪个护肤品比较好 浏览:192
舟山妇科医院怎么样 浏览:928
皮肤敏感期擦什么护肤品 浏览:755
水剂类化妆品包括哪些 浏览:921
珠海整形医生方明技术怎么样 浏览:567
无锡整形哪里好擅选玛利亚重点 浏览:317