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

如何在C语言中将char*类型全局变量password的值改为batman

解决方法

首先要明确:你的全局变量password是一个指向字符串字面量"superman"的指针,而字符串字面量通常存储在程序的只读内存区域,直接修改这块内存的内容会触发未定义行为(比如程序崩溃),所以不能用strcpy这类函数去覆盖原有内容。

正确的做法是让password直接指向wifipsk所指向的字符串"batman",代码如下:

// 在可以访问全局变量的作用域内执行
password = (char*)wifipsk;

补充说明

  • 这里的强制类型转换(char*)是因为wifipsk是const char*类型,而password是char*类型,直接赋值会产生编译器警告,强制转换可以消除警告,但要注意:后续不要通过password去修改"batman"的内容,因为它本质还是字符串字面量,同样属于只读内存。
  • 如果你的需求是让password指向一块可修改的内存来存储"batman",可以先为password分配堆内存,再拷贝内容:
    #include <stdlib.h>
    #include <string.h>
    
    // 在合适的位置执行
    // 原变量指向字面量,无需释放;若之前是堆分配内存,需先free
    password = malloc(strlen(wifipsk) + 1);
    if (password != NULL) {
        strcpy(password, wifipsk);
    }
    
    这种方式下password指向的是堆内存,后续可以修改内容,但要记得在程序结束前释放内存避免泄漏。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.20 19:19:57