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

C语言中函数参数char str[][20]的含义是什么,为何要使用该写法?

关于char str[][20]参数的含义及使用原因

具体含义

C语言中,当数组作为函数形参声明时,编译器会自动将其调整为对应类型的指针,因此你代码里的char str[][20]本质等价于char (*str)[20],即指向长度为20的char数组的指针:

  • 第一维长度留空,代表该参数可以接收任意行数的二维char数组,行数由第二个参数n指定
  • 第二维固定为20,代表每一行存储的字符串最大长度为20字节(包含C语言字符串必须的\0结束符,实际有效字符最多19个)
  • 函数内访问str[i]时,编译器会自动按照20字节的步长计算地址,直接取出第i个字符串的首地址,刚好适配printf中%s格式符对字符串首地址的参数要求

选用该写法的原因

  • 可读性更高:相比指针形式char (*str)[20],二维数组的写法更直观,能直接体现该参数是用来接收一组固定长度的字符串列表,其他开发者看代码时能快速理解参数用途
  • 降低开发出错概率:因为第二维长度固定,编译器会自动完成行偏移的计算,不需要开发者手动做指针运算,避免偏移计算错误的问题
  • 适配场景需求:这段函数是用来打印名称列表,业务场景下名称长度普遍较短,固定每个字符串最大存储长度为20字节刚好满足需求,调用方直接定义二维char数组存储名称就能传入,不需要做额外的参数转换

调用示例参考

你可以参考如下方式调用该函数:

int main() {
    // 定义3个名称的列表,每个名称最大存储长度为20字节
    char names[3][20] = {"Alice", "Bob", "Charlie"};
    printlist(names, 3);
    return 0;
}

内容的提问来源于stack exchange,提问作者Suhail Kakar

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.10 09:36:02