Pages

2010年10月2日 星期六

C語言指標範例(指標++)

C語言中最令初學者人頭大的指標,其實很容易記錯
指標的運算元順序是由右到左(書上寫的),實際來測試一下

  1. #include<stdio.h>
  2. int data[2] = {100,200};
  3. int moredata[2] = {300,400};
  4. int main(void){
  5. int * p1, * p2, * p3;
  6. p1 = p2 = data;
  7. p3 = moredata;
  8. printf(" *p1 = %d, *p2 = %d, *p3= %d\n",
  9. *p1, *p2, *p3);
  10. printf(" *p1 = %d, *p2 = %d, *p3= %d\n",
  11. *p1++, *++p2, (*p3)++);
  12. printf(" *p1 = %d, *p2 = %d, *p3= %d\n",
  13. *p1, *p2, *p3);
  14. //括號測試
  15. printf("It is equal result...\n");
  16. p1 = p2 = data;
  17. p3 = moredata;
  18. printf(" *p1 = %d, *p2 = %d, *p3= %d\n",
  19. *(p1++), *(++p2), (*p3)++);
  20. printf(" *p1 = %d, *p2 = %d, *p3= %d\n",
  21. *p1, *p2, *p3);
  22. return 0;
  23. }

  1. *p1 = 100, *p2 = 100, *p3= 300
  2. *p1 = 100, *p2 = 200, *p3= 300
  3. *p1 = 200, *p2 = 200, *p3= 301
  4. It is equal result...
  5. *p1 = 100, *p2 = 200, *p3= 301
  6. *p1 = 200, *p2 = 200, *p3= 302

由此得知,*p1++ 相等於 *(p1++)
而不是(*p)++,我之前記錯了><

0 意見: