++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)
扫描二维码关注公众号,回复:
11412946 查看本文章
这里的关键在与++操作产生了一份拷贝。
下面的不常用,但有助于提高认识:
案例:int strlen(char * string);
本文的图解源于Pointers on C (c和指针),这是一本学习C语言很好的书籍,推荐给大家。
下载链接:https://pan.baidu.com/s/1M27xG7zcPJWdY8wV_Fe5Tw
提取码:yatj