歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux編程 >> Linux編程 >> 在C語言中*p++與(*p)++的區別

在C語言中*p++與(*p)++的區別

日期:2017/3/1 9:10:30   编辑:Linux編程

在C語言中*p++與(*p)++的區別

首先*p++等價於*(p++)。至於為什麼會等價呢?根據c語言的優先級。*與++的優先級同處在第二級別上。他們的優先級是一樣的,又因為處在第二級別的優先級運算符是結合方向是從右到左,所以當出現*p++這樣的表達式的時候,根據優先級別相同,並且結合方向是從右到左,所以就等價於*(p++)了。那麼也就是,先將p指針移動到下個p指針所指向元素的地址的下一個地址,然後再對那個地址取值。(*p)++是取p所指向地址的值,然後再將這個值+1.這裡舉個例子,比如

int x,y,a[]={1,2,3,4,5},*p=a,*q=a;

x=*p++;//執行這一句後x=a[1]=2,p=a+1

y=(*q)++;//執行這一句後,y=a[0]+1=2,q仍然=a

Copyright © Linux教程網 All Rights Reserved