gpt4 book ai didi

c - C 中的字符串与指针连接

转载 作者:行者123 更新时间:2023-11-30 17:02:18 24 4
gpt4 key购买 nike

这就是 C 语言中的标准字符串连接代码:

char *stringcat(char *dest, const char *src){
char *save=dest;
while(*save !='\0'){
save++;
}
while(*src!='\0'){
*save=*src;
save++;
src++;
}
*save='\0';
return dest;
}

我的问题是为什么当我们用以下内容替换第一个 while 循环时:

while(*save++){};

它不起作用,但是,当替换为:

while(*++save){};

它确实有效。在前两个实例中,save 指向末尾的 dest 末尾的空终止符,然后该终止符被 src 中的第一个字符覆盖。然而,在第三个实例中,似乎 save 将指向空终止符之后的字符,这很奇怪。

最佳答案

如果你这样做while (*save++) {},你重复的操作是:加载字节,递增指针,检查字节是否为零。因此,在字符串末尾将发生的事情是:加载空字节,递增指针,检查字节是否为零,查看是否为零,退出循环。因此 save 将指向空字节之后。但是您想要开始复制该空字节的第二个字符串顶部,而不是后面。

(您是否可能在头脑中互换了 ++savesave++ 的含义?如果是这样,这里有一个有用的助记符:++ save表示递增,然后加载值;save++表示加载值,然后递增,所以变量名和++出现的顺序是对应的按照操作顺序。)

关于c - C 中的字符串与指针连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36604550/

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