”Java 方法可以返回数组类型“ 所想到的

在C和C++中不能返回一个局部变量,因为函数中的局部变量分配的存储空间在栈上,当函数执行完后会被重新利用,所以想要返回数组类型,有两种方式:1)静态变量(static in a function可以在函数调用之间保持值有效),2)利用malloc动态分配,但是最终要记得释放。下面是几个简单测试程序:

1.错误的示例:

#include <stdio.h>

int *func(int n){

int x = n *n;

int a[] = {1,3,4,5,7};

a[0] = x;

return a;

}

void func2(){

int a = 1;

int b = 78;

printf("%d vonzhou jjjj.\n",a);

}

int main(){

int n = 3;

int *a = func(3);

//func2(2);

printf("%d\n", a[0]);

return 0;

}

2.返回指向堆上的指针:

#include <stdio.h>

#include <stdlib.h>

int *func(int n){

int x = n *n;

int *a = (int *)malloc(5 * sizeof(int));

a[0] = x;

return a;

}

void func2(){

int a = 1;

int b = 78;

printf("%d vonzhou jjjj.\n",a);

}

int main(){

int n = 3;

int *a = func(3);

func(2);

printf("%d\n", a[0]);

free(a);

return 0;

}

3.利用静态变量:

#include <stdio.h>

int *func(int n){

int x = n *n;

static int a[] = {1,3,4,5,7};

a[0] = x;

return a;

}

void func2(){

int a = 1;

int b = 78;

printf("%d vonzhou jjjj.\n",a);

}

int main(){

int n = 3;

int *a = func(3);

func2(2);

printf("%d\n", a[0]);

return 0;

}

4.Java中可以返回数组类型:

public class TestArray
{

public static int []
func( int n) {

int []
arr = { 1, 3, 5, 6 };

return arr;

}

public static void func2( int n)
{

int a =
9;

int b =
10;

System. out .println("in
func2...." );

}

public static void main(String[]
args) {

int []
b = func(4);

func2(8);

System. out .println(b[0]);

}

}

”Java 方法可以返回数组类型“ 所想到的

时间: 2024-07-31 14:32:42

”Java 方法可以返回数组类型“ 所想到的的相关文章

java方法重写返回值类型

重写(Overriding)(1) 父类与子类之间的多态性,对父类的函数进行重新定义.如果在子类中定义某方法与其父类有相同的名称和参数,我们说该方法被重写 (Overriding).在Java中,子类可继承父类中的方法,而不需要重新编写相同的方法.但有时子类并不想原封不动地继承父类的方法,而是想作一定的修改,这就需要采用方法的重写.方法重写又称方法覆盖.(2)若子类中的方法与父类中的某一方法具有相同的方法名.返回类型和参数表,则新方法将覆盖原有的方法.如需父类中原有的方法,可使用super关键字

正确理解Java方法的返回值

首先来看一段代码 我们把这段代码称为代码①,接下来我们再来看另外一段代码 我们把这段代码称为代码②.在代码①当中,定义了一个方法,这个方法声明的返回值类型是double,而实际通过return关键字返回的却是一个int型的值,但并没有引起编译错误.而在代码②当中,情况正好相反,方法声明的返回值类型是int,方法内部的return关键字实际返回了一个double类型的值,在这种情况下,编译器却报出了语法错误.对比一下这两种情况,很多初学Java的小伙伴搞不清:为什么同样是方法声明的返回值类型与实际

Android JNI之调用JAVA方法的返回值签名

从http://blog.csdn.net/lonelyroamer/article/details/7932787截取的 如何签名: 下面看看Sign签名如何写,来表示要取得的属性或方法的类型. 1.普通类型签名 2.引用类型签名 object     L开头,然后以/ 分隔包的完整类型,后面再加:   比如说String    签名就是   Ljava/lang/String; Array      以[ 开头,在加上数组元素类型的签名            比如int[]   签名就是[I

Java调用存储过程返回数组

Java调用存储过程: 结合SQL操作与存储过程 create procedure set_death_age(poet VARCHAR2, poet_age NUMBER) poet_id NUMBER; begin SELECT id INTO poet_id FROM poets WHERE name = poet; INSERT INTO deaths (mort_id, age) VALUES (poet_id, poet_age); end set_death_age; 下面是调用上

SpringMVC方法的返回值类型和自动装配

1. void类型作为返回值类型 /** * 如果方法写成了void就跟原来servlet含义是差不多 的 * json */ @RequestMapping("/firstRequest") public void firstRequest(HttpServletRequest request, HttpServletResponse response, HttpSession session) throws IOException { UserInfo info=new UserI

012-关于EditText中的getText()方法的返回值类型以及string的转换问题(转)

原文链接:https://blog.csdn.net/mattdong0106/article/details/10139389 EditText中的getText()方法的返回值为CharSequence,如果我们想要获得string类型数据的话,需要在后边加上.toString 另外,String类型转为int:Integer.parseInt(str); String类型转为float:Float.parseFloat(str); string和Date的相互转换: DateFormat

wrong number of arguments,java方法反射时数组参数的坑

java方法中只有一个参数是数组,反射的时候我们不能想当然的传歌数组进去,传数组进去的时候表示多个参数. 两个数组不是一个意思啊. 我们应该把数组转为objet,这样才表示一个参数. import java.lang.reflect.Method; public class MethodTest { public void a(String[] args) { System.out.println("a"); } public static void main(String[] arg

怀疑:如果方法的返回值类型是引用类型的话,那么返回的就是地址。

缘由: "A property method may require additional memory or return a reference to somethingthat is not actually part of the object's state, so modifying the returned object has noeffect on the original object; querying a field always returns a reference

Spring MVC方法的返回值类型

一,String类型作为返回值类型 返回值类型为String时,一般用于返回视图名称 1.当方法返回值为Null时,默认将请求路径当做视图 /jsp/thread/secondRequest.jsp 如果说没有试图解析器,如果返回值为Null携带数据只能用JSON 2.当方法返回一个String的字符串时,当字符串为逻辑视图名时只返回视图,如果要携带数据则使用request,session或者Json 如果要用Model或者ModelMap传递数据,那么Model或者ModelMap绝对是方法入