Pages

2010年10月2日 星期六

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

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

#include<stdio.h>
int data[2] = {100,200};
int moredata[2] = {300,400};
int main(void){
 int * p1, * p2, * p3;
 p1 = p2 = data;
 p3 = moredata;
 printf(" *p1 = %d, *p2 = %d, *p3= %d\n",
   *p1, *p2, *p3);
 printf(" *p1 = %d, *p2 = %d, *p3= %d\n",
   *p1++, *++p2, (*p3)++);
 printf(" *p1 = %d, *p2 = %d, *p3= %d\n",
   *p1, *p2, *p3);
 //括號測試
 printf("It is equal result...\n");
 p1 = p2 = data;
 p3 = moredata;
 printf(" *p1 = %d, *p2 = %d, *p3= %d\n",
    *(p1++), *(++p2), (*p3)++);
 printf(" *p1 = %d, *p2 = %d, *p3= %d\n",
   *p1, *p2, *p3);
  return 0;
}

*p1 = 100, *p2 = 100, *p3= 300
 *p1 = 100, *p2 = 200, *p3= 300
 *p1 = 200, *p2 = 200, *p3= 301
It is equal result...
 *p1 = 100, *p2 = 200, *p3= 301
 *p1 = 200, *p2 = 200, *p3= 302

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

0 意見: