虽然过了但是

P5705 【深基2.例7】数字反转

shrayy @ 2021-06-03 17:29:03

这是以前的代码

#include<stdio.h>
int main()
{
    char ch[5],temp;
    scanf("%s",&ch);
    temp=ch[4];
    ch[4]=ch[0];
    ch[0]=temp;
    temp=ch[3];
    ch[3]=ch[1];
    ch[1]=temp;
    printf("%s",ch);
    return 0;
}

偷懒没用循环,结果WA了

然后看了看大佬的题解,改了一下

#include<stdio.h>
char ch[5];
int main()
{
    char temp;
    scanf("%s",&ch);
    temp=ch[4];
    ch[4]=ch[0];
    ch[0]=temp;
    temp=ch[3];
    ch[3]=ch[1];
    ch[1]=temp;
    printf("%s",ch);
    return 0;
}

然后就AC了,但是还是不懂

为什么这个ch一定要是全局变量才能过

输出明明一模一样啊


by __Cartesian__Tree__ @ 2021-06-03 17:56:29

输入字符串不需要取地符


by ud2_ @ 2021-06-03 18:00:44

@shrayy 而且数组不够大。

char[5] 只能装得下长为 4 的字符串。


by __OwO__ @ 2021-06-03 18:06:13

全局变量在堆上, 局部变量在栈上, 栈泄露会出问题, 堆泄露出问题对程序有影响的几率要稍微小一些


by 孙格非 @ 2021-06-30 20:14:49

@ OwO 对!


|