淘先锋技术网

首页 1 2 3 4 5 6 7

Java和C作为两种重要的编程语言,它们在数组传递方面有一些不同的处理方法。

Java数组传递

java和c的数组传递

在Java中,数组属于引用数据类型,传递时是通过引用传递,也就是传递一个指针给方法,方法中对这个指针的操作也就直接影响了原数组。


public class Main{
    public static void main(String[] args) {
        int[] arr = {1,2,3};
        System.out.println("调用前,arr[0] = " + arr[0]);
        change(arr);
        System.out.println("调用后,arr[0] = " + arr[0]);
    }

    public static void change(int[] arr){
        arr[0] = 4;
    }
}

执行上述代码,输出结果为:


调用前,arr[0] = 1
调用后,arr[0] = 4

可以看到,调用change方法改变了原数组的元素。

C数组传递

在C中,数组属于一种特殊的类型,虽然数组名本身也是一个指针,但是当数组传递给函数时,实际上传递的是一个指向数组第一个元素的指针,也就是传递的是一个地址。在函数内部对数组元素的修改也会影响原数组。


#include &ltstdio.h&gt 

void change(int arr[]){
    arr[0] = 4;
}

int main(){
    int arr[3] = {1, 2, 3};
    printf("调用前,arr[0] = %d\n", arr[0]);
    change(arr);
    printf("调用后,arr[0] = %d\n", arr[0]);
    return 0;
}

执行上述代码,输出结果为:


调用前,arr[0] = 1
调用后,arr[0] = 4

和Java中一样,调用change方法改变了原数组的元素。

总的来说,Java和C对于数组的传递采用不同的方式,但都是通过传递指针或地址的方式来实现,对于数组元素的修改都会影响原数组。