Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/63.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何使数组的第二行指向C中的第一行_Java_C_Arrays_Pointers_Object - Fatal编程技术网

Java 如何使数组的第二行指向C中的第一行

Java 如何使数组的第二行指向C中的第一行,java,c,arrays,pointers,object,Java,C,Arrays,Pointers,Object,这在Java中起作用: int a[][]=new int[2][4]; a[1]=a[0]; 但在C语言中它不起作用。 有可能吗 在C++中: int **a = new int*[2]; a[0] = new int[4]; a[1] = a[0]; 在C中: 在C/C++中,声明一个与JAVA中相同的二维数组,但编译器分配的内存不同。例如,在C语言中,一个int的二维数组被声明为一个连续的内存块 int a[][]=new int[2][4] 被分配为32(2*4*4)字节的连

这在Java中起作用:

int a[][]=new int[2][4];
a[1]=a[0];
但在C语言中它不起作用。 有可能吗

在C++中:

int **a  = new int*[2];
a[0] = new int[4];
a[1] = a[0];
在C中:


在C/C++中,声明一个与JAVA中相同的二维数组,但编译器分配的内存不同。例如,在C语言中,一个int的二维数组被声明为一个连续的内存块

int a[][]=new int[2][4]  
被分配为32(2*4*4)字节的连续块。它只有一个指向块开头的引用。如果要访问(i,j)处的元素,那么它将返回引用a+(i*2+j)处的值

但在java中,它分配一个由2个指针组成的数组,并再次分配每一行

a= new int[2][];
a[0] = new int[4];
a[1] = new int[4];
因此,您可以修改每行的引用

<>但是在C++中,也可以通过使用以下代码实现java行为。
int **a = new int*[2];
a[0] = new int[4];
a[1] = new int[4];
a[0] = a[1];
如果你需要C语言,你应该能够用malloc做同样的事情

int **a = new int*[2];
a[0] = new int[4];
a[1] = new int[4];
a[0] = a[1];