gpt4 book ai didi

c - 简单地通过 char 指针访问函数中的 char 数组

转载 作者:太空宇宙 更新时间:2023-11-04 01:29:28 25 4
gpt4 key购买 nike

在这个程序中,我通过函数指针访问一个全局char 数组,用按char 指针中的地址 更改字符串值会在全局char 数组中产生差异,但是当将字符串作为整个字符串更改时,它不会对全局数组产生任何影响

#include <stdio.h>
#include <string.h>

void function(char *string);

char str[20] = "Hello"; // global char array

int main()
{
function(str);
return 0;
}

void function(char *string)
{
int i;

printf("%s\n",string);
printf("%s\n", str);

for(i = 0;i < strlen(string);i++)
string[i] = 'a';

printf("%s\n",string);
printf("%s\n", str);

string = "jhony";

printf("%s\n",string);
printf("%s\n",str); // here is the doubt
}

输出

Hello
Hello
aaaaa
aaaaa
jhony
aaaaa //how this supposed to print aaaaa even after we changed string into jhony

最佳答案

string = "jhony";

不会将"jhony"复制到string指向的内存中。相反,它将 "jhony" 的地址分配给 string

所以之后,string 指向"jhony"str 保持不变。


正如@BrianCain 评论的那样,要将 "jhonny" 复制到由 string 寻址的内存中,您可以使用

strcpy(string, "jhonny");

关于c - 简单地通过 char 指针访问函数中的 char 数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25336583/

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