在下面的例子中,我对理解Java的“传值”行为有一个问题: public class Numbers { static int[] s_ccc = {7}; static int[] t_ccc = {7}; public static void calculate(int[] b, int[] c) { System.out.println("s_ccc[0] = " + s_ccc[0]); // 7 System.out.println("t_ccc[0] = " + t_ccc[0]); // 7 b[0] = b[0] + 9; System.out.println("\nb[0] = " + b[0]); // 16 c = b; System.out.println("c[0] = " […]
此问题旨在用作此常见问题的规范副本: 我在一个函数内dynamic分配数据,一切正常,但只在分配发生的函数内。 当我尝试在函数外部使用相同的数据时,出现崩溃或其他意外的程序行为。 这是一个MCVE: #include <stdlib.h> #include <stdio.h> void print_array (int* data, int size) { for(int i=0; i<size; i++) { printf("%d ", data[i]); } printf("\n"); } void create_array (int* data, int size) { data = malloc(sizeof(*data) * size); for(int i=0; i<size; i++) { data[i] = i; } print_array(data, size); } int main (void) { int* […]