1樓:匿名使用者
例如int a[5]=;
int *p = a;
*p++ 先取指標p指向的值(陣列第乙個元素1),再將指標p自增1;
cout << *p++; // 結果為 1cout <<(*p++); // 1
(*p)++ 先去指標p指向的值(陣列第乙個元素1),再將該值自增1(陣列第乙個元素變為2
cout << (*p)++; // 1cout <<((*p)++) //2
*++p 先將指標p自增1(此時指向陣列第二個元素),* 操作再取出該值
cout << *++p; // 2
cout <<(*++p) //2
++*p 先取指標p指向的值(陣列第乙個元素1),再將該值自增1(陣列第乙個元素變為2)
cout <<++*p; // 2
cout <<(++*p) //2
注意,上面的每條cout輸出,要單獨輸出才能得到後面的結果。
2樓:匿名使用者
圖為四種操作以及簡單的賦值操作後的結果
宣告p q為int*指標
可知:圖中第乙個操作先將*q賦值給*p然後q指標後移4位元組第二個操作q先後移4位元組後取那4個記憶體單元的整形值賦予p第三個操作為先把*q賦予*p後,然後*q的值自增1第四個為*q先自增1後,再把值賦給*p
3樓:maplestory太子
*(p++) 取(p+1)處位址的值。
*(++p) 取(p+1)處位址的值。和上面一樣。
*++p 取(p+1)處位址的值。和上面一樣。
*p++ 唯一不同的乙個,先取p位址處的值,再對p執行+1。
c語言是一門通用計算機程式語言,應用廣泛。c語言的設計目標是提供一種能以簡易的方式編譯、處理低階儲存器、產生少量的機器碼以及不需要任何執行環境支援便能執行的程式語言。
儘管c語言提供了許多低階處理的功能,但仍然保持著良好跨平台的特性,以乙個標準規格寫出的c語言程式可在許多電腦平台上進行編譯,甚至包含一些嵌入式處理器(微控制器或稱mcu)以及超級電腦等作業平台。
特點:1、c語言是乙個有結構化程式設計、具有變數作用域以及遞迴功能的過程式語言。
2、c語言傳遞引數均是以值傳遞,另外也可以傳遞指標。
3、不同的變數型別可以用結構體組合在一起。
4、只有32個保留字,使變數、函式命名有更多彈性。
5、部份的變數型別可以轉換,例如整型和字元型變數。
6、通過指標,c語言可以容易的對儲存器進行低階控制。
7、預編譯處理讓c語言的編譯更具有彈性。
4樓:匿名使用者
推薦你親自動手實驗一下,我的思路是首先你要知道符號的優先順序,如果是指標的話,++則表示所指物件的下乙個元素,++(*p)則表示將p指標所指向的物件自增,所以遇到這種情況,不要吝嗇括號的使用。
比如說int i[3] = ;
int *p = i;
*p++; // 表示 *p = i[0+1] = i[1] = 3;
(*p)++; // 由上條的語句知,p指向i[1],(*p)++則表示 i[1]++,即i[1] = 3+1 = 4
// *++p 分析同 *p++
// ++*p 分析同 (*p)++
//可以自己去編譯器中實驗
5樓:
內容和尺寸大小沒有分別,只是在畫素上面有分別,1080p適合超大液晶電視**,720p是適合普通液晶電視**,1080和720在電腦上面是看不出差別的,電腦顯示器太小了,說白了就是拿乙個80寸的液晶電視放1080p和720p的,近看1080p的還是很清晰,近看720p的就會看到畫素點。
6樓:栒木子
*(p++) 取p處位址的值。相當於a[0],因為先改變p的大小後應用於計算
7樓:萌萌的斯斯
根據譚浩強的書上講的,*(p++)與*(++p)並不一樣。
8樓:匿名使用者
p指向陣列a[1]
a[0]a[1]a[2]a[3]a[4]
_________________
|10 |20 |30 |40 |50|
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄^|
p*p=20;
先定義*p的值為20;
*p++=30;
移動了指標,原因如下一致:
*++p=30;
*和++級別相等,運算從右到左,即先計算++p,然後再計算*;所以,先移動一下指標,然後再取值~
++*p=21;
*和++級別相等,運算從右到左,即先計算*p,然後再計算++;所以,先取值*p=20;再++得到21;
9樓:匿名使用者
(一)與經營者協商和解;
(二)請求消費者協會調解;
(三)向有關行政部門申訴;
(四)根據與經營者達成的仲裁協議提請仲裁機構仲裁;
(五)向人民法院提起訴訟。
10樓:杜江溯
這個牽扯到優先順序的問題,,,左加加高於 *號高於 右加加。。。。。另外打括號了。當然首先算括號裡的。
(*p)++和*(p++)和*p++的區別,為什麼?
11樓:匿名使用者
*(p++):取出指標p所指
位址中的資料,指標+1
*p++ : 等同於 *(p++)
(*p)++ : 取出指標p所指位址中的資料,位址中的資料+1
tip1. * 與 ++的優先順序相同的,它們的結合性都是自右向左
tip2. ()的優先順序高於*和++
優先順序、結合性分析:
*p++ 由(tip1)可知,p先與++結合,再與*結合,
*(p++) 由(tip2)可知,p先與++結合,再與*結合
得出結論:*p++等同於 *(p++)
變數分析:
*(p++) 由(tip2)可知,是p先與++結合,變數是 p,
得出結論:*(p++) // 是指標所指的位址值在變化 (不同點)
(*p)++ 由(tip2)可知,p先與*結合,得到*p
是*p與++結合,變數是 *p
得出結論:(*p)++ //是指標所指位址中的資料值在變化 (不同點)
小結:因為(tip1、tip2)可得出:
1.指標所指位址自增
*p++等同於*(p++)
*++p等同於*(++p)
2.指標所指位址中資料自增
++(*p)等同於++*p
(*p)++
作為輸出項時
(左自增:先求變數變化,再輸出)
形式:++p、*++p、++*p、++(*p)、
(右自增:先輸出變數當前所指值,再求變數的變化)
形式:p++、*p++、(*p)++、*(p++)
哪個是變數:(在tip1、tip2的基礎上)與 ++ 結合的整體是變數
++p : p 是變數、
++(*p): (*p)是變數
12樓:稀飯
字首遞增遞減和*優先順序相同,從右到左;
字尾遞增遞減比字首優先順序高,從左到右。
比如int arr[5] = ;
int *p = arr;
*++p:p先自+,然後*p,最終為3
++*p:先*p,即arr[0]=1,然後再++,最終為2*p++:值為arr[0],即1,該語句執行完畢後,p指向arr[1]
(*p)++:先*p,即arr[0]=1,然後1++,該語句執行完畢後arr[0] =2
*(p++):效果等同於*p++
13樓:蘭之春春
(*p)++,是先取指標p的值,然後對其值進行++運算,
*(p++),是先對指標p進行++運算,然後再取取值,
*p++,同*(p++),因為按優先順序來看,*和++是同級,他們都是從右到左的順序進行運算,所以先++,再*。
如果char q[5] = "am";
char *p = q;
那麼,(*p)++後,p就變成了"bm";因為是進行對其首元素進行加1運算
*(p++)後,p就變成了"m",因為是先指向下乙個元素,再進行取值運算,
*p++同上面,
如果只是徵對這3個語句賦值給其他變數的話,3個的結果都是a,在這裡。
char o = (*p)++;
char m = *(p++);
char n = *p++;
都是a。
14樓:匿名使用者
int arr[2]=;
int *p=&arr[0];
(*p)++ // 等價於arr[0]++ p不變 既p所指向的內容增1
*(p++) //等價於 arr[0] p=&arr[1], 獲取p所指向的內容後 p指標增加1
*p++ 和*(p++) 一樣, 由於 ++操作優先於*
15樓:匿名使用者
樓主可以去看看c語言優先順序有關的知識。首先*p++等價於*(p++)。至於為什麼會等價呢?
根據c語言的優先順序。*與++的優先順序同處在第二級別上。他們的優先順序是一樣的,又因為處在第二級別的優先順序運算子是結合方向是從右到左,所以當出現*p++這樣的表示式的時候,根據優先級別相同,並且結合方向是從右到左,所以就等價於*(p++)了。
那麼也就是,先將p指標移動到下個p指標所指向元素的位址的下乙個位址,然後再對那個位址取值。(*p)++是取p所指向位址的值,然後再將這個值+1.這裡舉個例子,比如
int a[2]=;
int *p=a;
*p++//的結果就是等於陣列的第二個元素10.
(*p)++//的結果就是1+1=2.
樓主,我這樣解釋,把意思講明白了麼?
16樓:啊啊阿橙
自己跑個程式就知道了
17樓:白石黃海青
第乙個,p所指的那個值加1。第二個,假設p指向a[1],則使用時用a[1],但p已指向a[2],假設a[2] 存在。第三個,和第二個一樣的解釋,因為++的優先級別高於*的,那個括號有沒有都一樣
18樓:匿名使用者
首先p指的是指標,這你一定知道, *p++相當於(*p)++ 也就是平所指的值自加一,
*(p++)相當與p的位址加乙個單位,具體加多少要看p的型別了,詳細不說了。就是p的下乙個位址的值。 這就是區別。
19樓:匿名使用者
首先,明確:++的優先順序高於*的優先順序。
(*p)++
//首先取p所指向的值,給它所指向的值做字尾加,由於是字尾加,所以返回原來表示式的值,即該表示式最後的值為p所指向的值
*p++
//它相當於*(p++),首先指標p後移,由於對指標是字尾加,所以p++返回p沒後移時的指標,如果是陣列,那麼表示式的值為指標當前所指元素(指標沒有後移時)的值
++*p
//即相當於++(*p),先取p所指向的值,然後施以字首加,則該表示式的值為p當前所指物件的值+1的結果。
*++p
//相當於*(++p),指標p先後移,如果是陣列,則指向下乙個元素,然後++p返回指標下移後的指標。然後*取下移指標後所指向的值
非p和p是什麼關係,非p 和p是什麼關係?
假若p為假命題,那麼非p一定為真命題。p為真命題,則非p一定為假命題即 p與非p之間的真假性相反。非p是對p的結論進行否定,p 若x y,則x y 那麼非p 若x y,則x y p與非p都為假命題。非p 乙個命題與它的否定形式是完全對立的。兩者之間有且只有乙個成立。數學中常用到反證法,要證明乙個命題...
還有人玩p2p的嗎?p2p和p2g有什麼區別啊
風險不一樣 希望能幫到你,如果你的問題解決了,麻煩點一下採納,謝 投資理財專案 p2p和p2g有什麼區別 p2g是什麼模式?比p2p安全不?二者有啥不同 國內p2p和國外p2p有什麼區別?國外的p2p網路借貸平台則由於其完善的監管制度的存在,其模式以線上與線下結合為主,沒有擔保模式一類,透明度也相對...
餘額寶和p2p理財有什麼區別,p2p理財有哪些技巧
廣潤財富 你好,餘額寶和p2p網貸理財平臺的區別 餘額寶作為一款貨幣型理財產品,是穩健型投資理財的重要選擇,從收益來說買餘額寶等同於存銀行。p2p則是在p2p平臺上實現借款人和出借人的資訊撮合,然後直接達成借貸協議。從獲取收益的角度看,銀行存貸和p2p借貸本質上是一樣的,都是採用資金出借的方式獲得收...