11.21 下午

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

int main()
{
    char *str=(char*)malloc(sizeof(char)*81);
    gets(str);
    
    int i, k;
    char *p;         //假如说str="hello" 那么p=str,就是从h开始,p=str+1就是从e开始,p=str+5就是说p=“ ”(空格)! 
    len = strlen(str);
    p = str + len;        //str可以认为是malloc(char*81)然后*p指向str,让p访问str,从而一定程度上p等价于str!!!
                        //其实我们在while循环是把p当成了str的子字符串 
    while (1)
    {
        if ( p == str )  
        {
            printf("%s\n", p);//细节 
            break;//细节 
        }
        if (*p == ' ' && *(p+1) != ' ') //细节 
        {
            *p = '\0';//赋值!!! 
            printf("%s ", p+1);
        }
        p--;//相当于p在取len,len->len-1,len->len-3,len->len-4这么一个循环, 再通俗一点就是*p=str+k相当于str【len】一个的字符,到str 【len】-str【len-1】的字符 
            //又由于数组的有效长度是0->len-1 ,所以str【len】其实得到的是一个空格,后面的str【len-1】开始得到我们输入的字符(末尾字符)。
            //当我们str【】再次取到空格时说明我们已经完全一个单词的指向啦,这时候让*(p+1)来输出str【a】-str【len】的长度(p此时指向的就是str【a】到str【len】的地址)
            // 以此反复,最终使p与str最初的地址相同,来输出剩余的第一个单词(在反复取单词的过程中,我们让*p='\0'从而我们能够 在每次取单词的时候只取单个的单词
    }
    free(str);
    return 0;
}
/*输入hello world                   ----len=11
                        ----str[11]
d                        ----str[10]->str[11]
ld                        ----str[9]->str[11]
rld                        ----str[8]->str[11]
orld                    ----str[7]->str[11]
world                    ----str[6]->str[11]
                        ----str[5]=0 此时让p='/0',插入'/0'让p只能指向本单词,不会指向后面的world但是p依旧还是指向着world的地址 ,相当于让str[5]='/0'啦 
o                        ----str[4]->str[11]    
lo                        ----str[3]->str[11]
llo                        ----str[2]->str[11]
ello                    ----str[1]->str[11]
hello                    ----str[0]->str[11]

*/ 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值