C语言 谁能解释一下指针在这段代码中是如何工作的?[关闭]

pjngdqdw  于 2023-04-11  发布在  其他
关注(0)|答案(1)|浏览(137)

已关闭,此问题需要更focused,目前不接受回答。
**要改进此问题吗?**更新问题,使其仅关注editing this post的一个问题。

2天前关闭。
这篇帖子昨天编辑并提交审核,未能重新打开帖子:
原始关闭原因未解决
Improve this question
谁能给我解释一下代码?我不明白反向函数是怎么工作的。

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

int reverse(char *s);
int main(){
    char s[10] = {0};
    int a = 12345;
    sprintf(s,"%d",a);
    reverse(s);
    printf("%s",s);
}

int reverse(char *s){
    char *end = s;
    char temp;

    while(*end) 
    end++;
    end--;
    for(; s<end; s++, end--){
        temp = *s;
        *s = *end;
        *end = temp;
    }

答案是54321

a1o7rhls

a1o7rhls1#

while(*end) 
    end++;

表示我们正在执行 end++ while

*end != '\0'

我们只是把指针 end 替换到c_string char *s的末尾。在end之后--指针 end 指示char *s的最后一个char。
for 循环中,我们将替换chars来做c_string char *s的反转。例如,第一次迭代将这样做:

temp = *s // = 1
*s = *end // = 5
*end = temp // = 1
// c_string s = "52341"

相关问题