我从 C 中断了一段时间,现在又回到了它。
如果我想创建一个二维数组,我可以通过两种方式进行:
double** m_array = (double**) malloc(2*sizeof(double*));
double* m_array = (double*) malloc(2*sizeof(double));
或者
double array[2][2];
但是,当我希望传递 malloc'd 数组而不是传递另一个时,似乎有两个约定:
//allowed for passing in malloc'd array, but not for other array
func_m(m_array) //allowed
func_m(array) //disallowed
func_m(double** m_array)
//allowed for passing in either array; required for passing in non-malloc'd array
func(m_array) //allowed
func(array) //allowed
func(double array[][2])
首先,除了它是指向指针数组的指针之外,我不需要任何信息。但它只能是一个 malloc 的数组。
其次,我需要传递 double* 数组指向的每个数组的长度。这似乎很愚蠢。
我错过了什么吗?提前致谢。