老牛来学习 发表于 2020-4-7 20:07:35

C语言

#include<stdio.h>

int main()
{
    char *p,s;
    int n;
    p=s;gets(p);
    n = *p-'0';
    printf("%d",n);
}



想问一下为什么这段代码我输入456,输出为4?

BngThea 发表于 2020-4-7 20:25:29

因为p本身只是一个char指针,所以长度为1

老牛来学习 发表于 2020-4-7 20:46:27

BngThea 发表于 2020-4-7 20:25
因为p本身只是一个char指针,所以长度为1

这里的n = *p - '0'
如果我输入432,*p就是4
上面的那个式子就相当于4-0=4,所以n = 4
是不是这样的??

BngThea 发表于 2020-4-7 20:56:37

老牛来学习 发表于 2020-4-7 20:46
这里的n = *p - '0'
如果我输入432,*p就是4
上面的那个式子就相当于4-0=4,所以n = 4


对的,p只是一个char*

love_qj 发表于 2020-4-8 13:05:48

这里整数是以字符串形式存储,而p指向数组首地址,即*p = s = 4
页: [1]
查看完整版本: C语言