Java 如何使数组的第二行指向C中的第一行
这在Java中起作用: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)字节的连
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];