code.club

 找回密碼
 立即註冊
搜索
查看: 7100|回復: 0
打印 上一主題 下一主題

有關指標和遞增運算子

[複製鏈接]
跳轉到指定樓層
樓主
發表於 2014-7-16 22:26:16 | 只看該作者 回帖獎勵 |正序瀏覽 |閱讀模式
有一例題如下:

#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。
回復

使用道具 舉報

您需要登錄後才可以回帖 登錄 | 立即註冊

本版積分規則

小黑屋|手機版|Archiver|code.club  

GMT+8, 2024-11-22 05:23 , Processed in 0.093214 second(s), 18 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回復 返回頂部 返回列表