(C语言)深度刨析++i和i++

++i 和 i++ 有什么区别呢?在内存中具体是怎样实现的呢?问题的抛出源于下面这段代码。

Input:

#include <stdio.h>
int main()
{
    int a = 0;
   printf("a++ = %d\n",a++);
    a = 0;
   printf("++a = %d\n",++a);
   return 0;
}

Output:

a++ = 0
++a = 1

结论:前缀++是先增加i的值,再返回i的拷贝作为右值; 

          后缀++是先返回i的拷贝作为右值,然后增加i的值。

这里的关键在与++操作产生了一份拷贝,具体是如何实现的呢?请见下文!

注意这里的cp的数据类型是指针!!!cp的值是另一个变量的地址值,cp的箭头指向代表cp的所指的变量!!!

这里我们结合指针说明以下:(from Pointers on C)

这里的关键在与++操作产生了一份拷贝。

下面的不常用,但有助于提高认识:

案例:int strlen(char * string);

本文的图解源于Pointers on C (c和指针),这是一本学习C语言很好的书籍,推荐给大家。

下载链接:https://pan.baidu.com/s/1M27xG7zcPJWdY8wV_Fe5Tw 
提取码:yatj 
 

猜你喜欢

转载自blog.csdn.net/qq_39478139/article/details/102729740