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

C语言:如何避免函数修改传入的原数组变量(无需创建新变量)

问题解决方法

在C语言里,数组名作为函数参数传递时会自动退化为指向数组首元素的指针,所以tf函数里的argument直接指向了Test数组的内存空间,修改argument[0]本质就是修改原数组的内容。

要在tf函数内不创建新变量的前提下避免修改原变量,只需给函数参数加上const限定符,将参数声明为const char *argument。这样编译器会阻止对argument指向的内容进行修改,从语法层面杜绝原数组被意外修改的可能。

修改后的代码示例

#include <stdio.h>

// 参数添加const限定,禁止修改指向的内容
void tf(const char *argument){
    // 尝试执行 argument[0] = 'Z'; 会触发编译错误
}

int main() {
    char Test[5] = "Hello";
    printf("'Test' before calling tf function : %s\n",Test);
    tf(Test);
    printf("'Test' after calling tf function  : %s\n",Test);    
    return 0;
}

说明

添加const后,编译器会对所有修改argument指向内容的操作进行检查,一旦发现就会抛出编译错误,这样既能保证原数组Test不受影响,又完全没有在函数内创建新变量,符合你的需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.16 02:05:08