gpt4 book ai didi

C strcpy 函数和 char*

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

我有一个关于将指针从 function1 发送到 function2function2 更改该指针的问题。让我们看一下“自制”strcpy:

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
void strcopy(char* targ, char* src) {
while(*src) {
*targ = *src;
targ++;
src++;
}
*targ = 0;
}
int main() {
char* src = "this is aa string";
char* targ = malloc(strlen(src)*sizeof(*targ)+1);
strcopy(targ, src);
printf("'%s'\n", targ);
return 0;
}

输出是'这是一个字符串'

问题:为什么 targ 指向字符串的开头,尽管我们在函数中做了 targ++ ?看起来我们正在按值发送指针!任何人都可以对此做出解释吗?谢谢。

最佳答案

当您将指针传递给函数时,您确实传递了指针的值,您的“targ”变量是 main() 函数中 targ 指针的副本。在 strcopy() 中增加它对您的原始指针没有影响。当您按值传递一个变量时,您确实传递了一个指向原始变量的隐藏指针,但在这种情况下,您将内存地址存储到堆栈上的一个新变量中。

关于C strcpy 函数和 char*,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28239269/

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