当然不是说基础不重要,只是你问的这个问题实在是意义不大,这不是在分析概念,而是咬文嚼字了。像int a = 10这种,就是个变量,变量的值是10。不用想什么指针、内存、地址的问题。等到你学int *p = &a再讨论这些不迟。
另外,地址是地址,指针是指针,指针的值是地址
从左至右计算(a*=3)和(a+=2)如下:c=(a*=3)+(a+=2)→c=(a=a*3)+(a=a+2)→c=(a=1*3)+(a=3+2)→c=(a==5)+(a==5)→c=(5)+(5)=10。这是因为先计算a*=3使a==3,再计算a+=2使a==5——但只有一个变量a,所以原来的a==3被修改成了a==5,最后计算c=(a)+(a)时得到了5+5。为了验证,你可以把c=(a*=3)+(a+=2)改写成c=(a+=2)+(a*=3),按以上分析结果自然应该是18。本人之见,这应该不是C的正宗规则,应该是bug,且可能不同的编译器会有不同的处理过程。供参考。
就一个递归调用呀。就是返回的是c的值 一直递归到最里层 c = 10也就是age(0)返回值是10 然后是age(0)+2 返回12 就是age(1)的返回值以此类推
age 5
c = age 4 +2
c = age 3 +2
c = age 2 +2
c = age 1 +2
c= 10
然后再返回c的值 由下向上累加
c = 10
c = 12
c = 14
c = 16
c = 18
c = 20