国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > C++ > 正文

C語言中6組指針和自增運(yùn)算符結(jié)合方式的運(yùn)算順序問題

2020-05-23 14:17:14
字體:
供稿:網(wǎng)友

本文通過代碼實(shí)現(xiàn)分析了6種組合:* p++,(* p)++,* (p++),++* p,++( * p), * (++p),需要的朋友可以參考下

在C語言中,當(dāng)指針運(yùn)算符和++或者–結(jié)合時(shí)很容易分不清運(yùn)算順序,在這里總結(jié)一下,下面一共分析6中組合: * p++,(* p)++,* (p++),++* p,++( * p), * (++p)。

先看段代碼以及輸出:

 

 
  1. #include<stdio.h> 
  2. int main() 
  3. int a[3]={1,3,5}; 
  4. int *p=a; 
  5. printf("----------------1----------------/n"); 
  6. printf("%d/n",*p++); 
  7. printf("%d/n",*p); 
  8. int i; 
  9. for(i=0;i<3;i++) 
  10. printf("%d ",a[i]); 
  11. printf("/n"); 
  12. printf("----------------2----------------/n"); 
  13. p=a;//reset data 
  14. printf("%d/n",(*p)++); 
  15. printf("%d/n",*p); 
  16. for(i=0;i<3;i++) 
  17. printf("%d ",a[i]); 
  18. printf("/n"); 
  19. printf("----------------3----------------/n"); 
  20. a[0]=1;//reset data 
  21. p=a; 
  22. printf("%d/n",*(p++)); 
  23. printf("%d/n",*p); 
  24. for(i=0;i<3;i++) 
  25. printf("%d ",a[i]); 
  26. printf("/n"); 
  27. printf("----------------4----------------/n"); 
  28. p=a; 
  29. printf("%d/n",++*p); 
  30. printf("%d/n",*p); 
  31. for(i=0;i<3;i++) 
  32. printf("%d ",a[i]); 
  33. printf("/n"); 
  34. printf("----------------5----------------/n"); 
  35. p=a; 
  36. a[0]=1; 
  37. printf("%d/n",++(*p)); 
  38. printf("%d/n",*p); 
  39. for(i=0;i<3;i++) 
  40. printf("%d ",a[i]); 
  41. printf("/n"); 
  42. printf("----------------6----------------/n"); 
  43. p=a; 
  44. a[0]=1; 
  45. printf("%d/n",*(++p)); 
  46. printf("%d/n",*p); 
  47. for(i=0;i<3;i++) 
  48. printf("%d ",a[i]); 
  49. printf("/n"); 
  50. return 0; 

輸出結(jié)果是這樣的:

C語言中6組指針和自增運(yùn)算符結(jié)合方式的運(yùn)算順序問題

第一組:*p++,它的運(yùn)算順序是先返回 *p的值,然后p再++。

第二組:(*p)++,他的運(yùn)算順序是先返回 *p的值,然后 *p的值再++,這一點(diǎn)從運(yùn)算后的數(shù)組a的值可以看出來。

第三組:*(p++),運(yùn)算順序是先返回 *p的值,然后p再++,也就是說它和 *p++的運(yùn)算順序一樣。

這三組都是先返回 *p的值,區(qū)別就在于到底是p++還是 *p的值++。

第四組:++*p,先將 *p的值++,然后再返回 *p的值。

第五組:++(*p),先將 *p的值++,然后再返回 *p的值,所以它和++ *p是一樣的。

第六組: * (++p),先將p的值++,然后再返回 * p的值,和 *++p是等價(jià)的。

這三組的特點(diǎn)是最后都是返回 *p的值,不同點(diǎn)在于是 *p先++還是p++。

以上就是本文的全部內(nèi)容,希望大家可以喜歡。

發(fā)表評論 共有條評論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 怀宁县| 阆中市| 孝感市| 普兰店市| 华宁县| 浙江省| 琼海市| 安徽省| 贵南县| 青铜峡市| 岢岚县| 两当县| 平顶山市| 淮滨县| 安阳县| 县级市| 探索| 山东| 正定县| 西充县| 韩城市| 新乡县| 堆龙德庆县| 内丘县| 淮南市| 拉萨市| 将乐县| 重庆市| 恩平市| 沙河市| 分宜县| 嘉兴市| 诸暨市| 曲沃县| 福海县| 石泉县| 泾源县| 郓城县| 资阳市| 正镶白旗| 纳雍县|