i++、++i 的区别

时间:2019-01-17
本文章向大家介绍i++、++i 的区别,主要包括i++、++i 的区别使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

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

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

坚持✊