猿问

精通c,指针大神请出来,有点有意思的东西喔(其实好ew)

一段异常ew的代码,

 #include<stdio.h>
#include<string.h>
int main( void )
{
    char* s="1101";//13
    char* p=s+strlen(s);
  
    unsigned i=0;
    unsigned num=0;

    while (p-->s)
        num^=!(*p^'1')<<i++;
    printf("----");
    printf("%u\n",num);

    return 0;
}
这个是把二进制转换为10进制 的代码。。。。。。。。。。。。。至于为什么写成这个样子,不是我写滴。。。为了考我这样不会指针的人类吧。

首先 char* p=s+strlen(s);为什么p指针的内容和s指针的内容就一样了,(指针学得很不好求解答下)但是用编译器输出p,得到的是null,可以理解为这个时候的p指向的是字符串结束标志'\0'么,

然后while (p-->s)其实是while((p--)>s)【这样分开稍微好理解一点,】这里,p--怎么理解呢,这个字符串p倒着输出么。跪求解答啊,后面涉及位运算的,大神随意,那个不是很想知道。

谢谢(如果有人的话,应该有吧)

冯宝宝
浏览 1168回答 1
1回答

冯宝宝

指针没有学好,痛苦,因为字符串和整数相加,偏移,指针,,,,,,去学指针吧,人类们
随时随地看视频慕课网APP
我要回答