i++、++i 的区别

2 篇文章 0 订阅
2 篇文章 0 订阅

在准备字符串相关的编程题练手的时候,编程过程中发现了一个小问题
代码一:

char *mystrcpy(char *str, const char* src)
{
    if(str == NULL || src == NULL)
        return NULL;
    char *addres = str;
    
    while(*src != '\0')   //[1]
        *str++ = *src++;
    return addres;
}

代码二:

char *mystrcpy(char *str, const char* src)
{
    if(str == NULL || src == NULL)
        return NULL;
    char *addres = str;

    while((*str++ = *src++) != '\0');   //[2]
    return addres;
}

这两个都是字符串拷贝函数,两个代码是有微小差异的!

int main()
{
    const char *src = "world";
    char str[] = "helpo world";
    char * p = mystrcpy(str, src);
    show(p);
    return 0;
}

差异在代码有注释!

while(while((*str++ = *src++) != '\0'); 
看不懂这行代码,可以先看个简单的好描述的代码
 

int i = 0;
while(i++ < 10);
printf("%d\n",i);

这个代码输出i为11, i++没有出又括号前i的值是没有加一的,出了右括号i的值才会进行加一操作,可以在ide中或者用gdb调试一下

字符串拷贝函数就是这样,while((*str++ = *src++) != '\0');   这行代码将'\0' 拷贝给str,出了循环的右括号后str进行加一,循环结束。

 

++i,则是加加后直接把值赋给i

坚持✊

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值