C语言通过函数传递动态数组调用printTest出现随机值问题求助
问题原因分析
你的代码核心问题是变量名大小写拼写错误,这直接导致了printTest输出随机值:
在main函数中,你定义的变量是小写L的testlength,但调用printTest时传入的是大写L的testLength——C语言严格区分大小写,testLength属于未初始化的新变量,它的取值是内存中的随机垃圾值。
当printTest用这个随机的length作为循环上限时,会超出你实际分配的Test内存范围,访问到未初始化的内存区域,自然输出随机数值。而你在main里直接操作时,使用的是正确的testlength,循环范围匹配实际分配的空间,所以不会出现问题。
另外补充几个潜在问题:
getTest中你仅用malloc分配了单个Test的空间,若后续有realloc操作,务必确保正确更新*length的值,否则仍可能出现越界访问- 代码未释放
malloc分配的内存,会造成内存泄漏 printTest的循环逻辑中,要保证arrTest[i]的访问不超过实际分配的元素数量
修复后的main函数示例:
int main() { int testlength = 0; Test *myTest = getTest(&testlength); printTest(myTest, testlength); // 修正变量名大小写 }
内容的提问来源于stack exchange,提问作者std124_lf
相关产品推荐
相关产品推荐

