gpt4 book ai didi

c - 传递指针和复制值

转载 作者:行者123 更新时间:2023-11-30 19:11:53 25 4
gpt4 key购买 nike

我想我在这里做了一些愚蠢的事情,请帮助我理解它是什么,我崩溃了:

char *data="xyz";
int EEIndex=0;
int getEEPROMindex();
void updateEEPROMindex();
void getCmd(char *cmd);
void getcmdAtIndex(int index,char *cmd);


int main(int argc, const char * argv[]) {

getCmd(data);
printf("%s ",data );
return 0 ;
}

void getCmd(char *cmd)
{
getcmdAtIndex(EEIndex, cmd);
}

void getcmdAtIndex(int index,char *cmd)
{
char *EEPROM[]={"A","E","C","D"};

strcpy(cmd, EEPROM[index]);
EEIndex=index+1;

}

最佳答案

习惯上将字符串文字设置为只读。即:

char *data="xyz";

当您的代码尝试更改字节 xyz 时,操作系统会使其崩溃。

要使其可写,请将指针替换为数组;您还应该指定数组的大小。最简单的方法是:

char data[] = "xyz"; // will hold a maximum of 3 bytes (size is implicit)

char data[20]; // will hold a maximum of 19 bytes plus an end-of-string byte

您还可以使用strdup:

char* data;
...
strdup(cmd, EEPROM[index]); // instead of strcpy

但这涉及动态内存分配,我认为您不想为此烦恼。

关于c - 传递指针和复制值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38683488/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com