Function Processing 3.0.1:调用函数时,函数返回在内存中的什么位置? 表格; 无效设置() { int i=0; table=loadTable(“//.csv文件的位置”,“头”); 重新存储的值(i,表); printArray(数组[115][50]); } int[][]重新存储的值(int i,表) { int[][]数组=新int[312][743]; TableRow行=table.getRow(i); 数组[50][55]=row.getInt(0); 数组[115][50]=row.getInt(1); 数组[160][60]=row.getInt(2); 数组[205][100]=row.getInt(3); 数组[245][160]=row.getInt(4); 数组[135][130]=row.getInt(5); 数组[55][190]=row.getInt(6); 数组[185][200]=row.getInt(7); 数组[100][250]=row.getInt(8); 数组[240][260]=row.getInt(9); printArray(数组[115][50]); 返回数组; }

Function Processing 3.0.1:调用函数时,函数返回在内存中的什么位置? 表格; 无效设置() { int i=0; table=loadTable(“//.csv文件的位置”,“头”); 重新存储的值(i,表); printArray(数组[115][50]); } int[][]重新存储的值(int i,表) { int[][]数组=新int[312][743]; TableRow行=table.getRow(i); 数组[50][55]=row.getInt(0); 数组[115][50]=row.getInt(1); 数组[160][60]=row.getInt(2); 数组[205][100]=row.getInt(3); 数组[245][160]=row.getInt(4); 数组[135][130]=row.getInt(5); 数组[55][190]=row.getInt(6); 数组[185][200]=row.getInt(7); 数组[100][250]=row.getInt(8); 数组[240][260]=row.getInt(9); printArray(数组[115][50]); 返回数组; },function,processing,local-variables,Function,Processing,Local Variables,如果我删除“设置”下的打印操作,则从函数中包含的同一打印操作返回正确的值 但由于某种原因,调用函数后数组不存在,返回错误“array cannot resolved to variable”,这意味着之前工作的同一个打印函数在函数外部不工作 是否有什么原因使我无法在通过函数创建阵列后对其执行操作?它甚至存在于内存中吗?您正在寻找的概念称为范围。你可以通过谷歌搜索、通过或在我写的文章中找到更多关于范围的信息 但基本上,只要指向它的变量在范围内,值就在内存中*(见下文)。一个变量的作用域是,,只要你

如果我删除“设置”下的打印操作,则从函数中包含的同一打印操作返回正确的值

但由于某种原因,调用函数后数组不存在,返回错误“array cannot resolved to variable”,这意味着之前工作的同一个打印函数在函数外部不工作


是否有什么原因使我无法在通过函数创建阵列后对其执行操作?它甚至存在于内存中吗?

您正在寻找的概念称为范围。你可以通过谷歌搜索、通过或在我写的文章中找到更多关于范围的信息

但基本上,只要指向它的变量在范围内,值就在内存中*(见下文)。一个变量的作用域是,只要你有方法去实现它。换句话说,一个值在内存*中,只要有一个变量指向它

您的
数组
变量仅在
ResValuesStored()函数的作用域中。这就是为什么当您尝试在该函数之外使用它时会出现错误。函数一结束,该
数组
变量就超出范围

但是,由于您返回数组的值,您仍然可以通过将返回值保存到变量来获得它。你会这样做:

int[]returnedArray=ResValuesStored(i,表);
打印阵列(返回阵列[115][50]);
以前,您没有将返回值保存到变量,这意味着它没有任何指向它的范围内变量,这意味着它不再在内存*中

还有其他方法可以将变量保留在范围内,例如在草图级别而不是在函数级别声明它。但您的问题的答案是:只需将返回值保存到变量中,以使其保持在范围内


*注意:当范围内没有变量指向值时,我们说值不在“内存中”,但更准确的说法是这些值仍在内存中,但它们现在符合垃圾收集的条件。这取决于Java——可能是马上,也可能是一个小时后。但是我们无法访问这些变量,因此出于您的目的,您可以认为它们不再存在于内存中。

非常感谢。我现在明白了。