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