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

问题描述 投票:0回答:1

谁能为我解释一下代码? 我不明白反向功能的作用是什么。

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


int reverse(char *s);
int main(){
    char s[10] = {0};
    char s1[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) #what is this?
    end++;
    end--;
    for(; s<end; s++, end--){
        temp = *s;
        *s = *end;
        *end = temp;
    }

答案是54321

c pointers
1个回答
0
投票
while(*end) 
    end++;

表示我们正在做end++while

*end != '\0' 

我们只是将指针 end 替换为 c_string char *s 的末尾。 end-- 指针 end 表示 char *s 的最后一个字符。

for 循环中,我们正在替换 chars 以执行 c_string char *s 的反向操作。例如,第一次迭代将执行此操作:

temp = *s // = 1
*s = *end // = 5
*end = temp // = 1
// c_string s = "52341"
© www.soinside.com 2019 - 2024. All rights reserved.