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

C++中使用函数复制字符到数组出现C2664编译错误求助

问题解决:C2664 类型不匹配错误

错误根源

你的代码存在三个核心问题:

  1. 函数声明与定义不匹配:头文件Function.h里声明的copyArray接收两个char类型参数,但Main.cpp里的定义实际接收两个字符数组,编译器以头文件声明为准,导致传参时类型不匹配。
  2. 函数调用语法错误:auther.cpp里直接在函数参数中定义数组char myArray[50],这不符合C++语法规范。
  3. 复制逻辑不严谨:固定循环50次会复制字符串结束符后的垃圾数据,且未给目标数组添加结束符,导致目标数组不是合法的C风格字符串。

修正后的代码

1. 修正 Function.h

void copyArray(char word[], char temp[]);

2. 优化 Main.cpp 中的函数定义

void copyArray(char word[], char temp[]) {
    int i = 0;
    // 复制到字符串结束符为止
    while (word[i] != '\0') {
        temp[i] = word[i];
        i++;
    }
    // 给目标数组添加字符串结束符
    temp[i] = '\0';
}

3. 修正 auther.cpp 中的调用逻辑

char myArray[50]; // 先声明数组
copyArray("CHAMPAGNE", myArray); // 传递数组名

关键说明

  • 函数声明必须与定义的参数完全一致,编译器才会正确识别函数签名。
  • 传递数组时,直接写数组名即可,数组名会隐式转换为指向首元素的指针。
  • 复制C风格字符串时,必须以'\0'作为结束标志,否则无法正确识别字符串边界。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 20:40:26