gpt4 book ai didi

java - C语言中如何让数组的第二行指向第一行

转载 作者:行者123 更新时间:2023-11-30 15:28:23 24 4
gpt4 key购买 nike

这适用于 Java:

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

但在 C 中它不起作用。无论如何有可能吗?

最佳答案

在C/C++中,和JAVA中一样声明一个二维数组,但是编译器分配的内存不同。例如,在 C 中,将 int 的二维数组声明为连续的内存块。

int a[][]=new int[2][4]  

被分配为 32(2*4*4) 字节的连续 block 。它只有一个指向 block 开头的引用。如果您想访问 (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 做同样的事情。

关于java - C语言中如何让数组的第二行指向第一行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26622344/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com