You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.09 17:40:21