자바 포인터 설정에 관한 질문.
거울
아래는 c언어로 구현한 것입니다.
int **num;
num = make_num(num,&x,&y);
int ** make_num(int **temp, int *x, int *y)
{
cout input x: ;
cin *x;
cout \n;
cout input y:;
cin *y;
//cout *x *y;
temp = new int *[*x];
for(int i = 0; i *x; i++)
temp[i] = new int[*y];
return temp;}//make_num//x의 크기와 y의 크기를 입력받은 많큼의 값을 배열로 선언해서 메모리를 할당하고
그 메모리의 주소를 반환합니다.
이것을 자바로도 구현을 할수 있습니까?
import java.io.*;
import java.util.*;public class jun
{
int num[][];
BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
public jun()
{}public static void main(String[] args)
{
jun j = new jun();
j.make_num();
}//main
public void make_num()
{
int x = 0;
int y = 0;try
{
System.out.print(input x: );
x = Integer.parseInt(in.readLine());
System.out.print(input y: );
y = Integer.parseInt(in.readLine());
}catch(Exception e)
{
System.out.println(make_num error);
};
num = new int[x][y];
//num = new int[1][10];System.out.println(num size is + num.length);
}//make_num
}//class
저는 위와 같이 구했는데 문제는 num이 지역변수가 아닌 전역변수라서...
num 을 자바에서 지역변수로 선언을 하면서 포인터와 같이 주소값을 넘겨서 값을 수정할수 있는 방법이 없을까요?
-
대나무
답변들 감사합니다^^
저녁에 다시 한번 해보겠습니다. -
에드문드
Java 는 기본적으로 pointer 개념이 없어 call by value 방식이지만 primitive type형에 대해서는 call by value 방식이고 일반 객체(배열포함)에 대해서는 call by reference 처럼 작동(객체에 대한 주소값이 call by value로 넘어가기 때문에 실제적으론 해당 객체에 대한 주소값이 복제 돼어 같은 객체를 가르킴)합니다.
-
달콤이
전체적으로 클래스에 역활에 따라서 그냥 맴버로 놓는것도 좋을듯 하고요.
전체 소스가 아닌 부분 소스 이실텐데....이부분에서 지역 전역 변수로 나누는게 의미가 있나요? -
비사벌
위의 C코드에서는 num을 인자로 넘겼는데요.
왜 자바에서는 인자를 안넘기시나요?
그냥 인자로 넘기고 리턴받으면 될듯 한데요. -
가랑비
반환형을 void로 하지 말고 int[][]로 한 뒤에 return num 하면 안 되나요? ㅎ