code.club

標題: 有關指標和遞增運算子 [打印本頁]

作者: enter    時間: 2014-7-16 22:26
標題: 有關指標和遞增運算子
有一例題如下:

#include <stdio.h>
#include <conio.h>
int main(void)
{
        int i[]={100,200,300,400,500};
        int *p=i;
        printf("*p++=%d\n",*p++);
        printf("*p=%d\n",*p);
        printf("*++p=%d\n",*++p);
        printf("*p=%d\n",*p);
        printf("++*p=%d\n",++*p);
        printf("*p=%d\n",*p);
        getch();
        return 0;
}
       

答案是:
*p++=100
*p=200
*++p=300
*p=300
++*p=301
*p=301

這和遞增運算子++的看法有關。

例如 int i,j;
i=100;
j=i++;
則j=100 而i則變成101。
所以*p++還是100,和原來的*p一樣。而第二式的*p則變成++一個位址之後的200。
而遞增或遞減運算子放前面的話,則是先++或--再得其值。
所以*++p就是先++到了300,因此*++p=300,而下一式的*p也是300。
而++*p則是就目前的*p=300先++,此時是對值++,所以是301。




歡迎光臨 code.club (https://code.club/) Powered by Discuz! X3.2