自增自減運算例題詳解 c語言中指針可不可以用在自增自減運算符中?
c語言中指針可不可以用在自增自減運算符中?普通指針可以執(zhí)行,--操作,普通指針不能,函數(shù)指針也不能。如果:int a[10],*P=a,那么P,P,P--,--P是合法的,但是a,a,a--,--a不
c語言中指針可不可以用在自增自減運算符中?
普通指針可以執(zhí)行,--操作,普通指針不能,函數(shù)指針也不能。如果:int a[10],*P=a,那么P,P,P--,--P是合法的,但是a,a,a--,--a不是合法的,因為a是數(shù)組名和常量指針;常量修改的常量指針不能執(zhí)行,--操作,如果int x,*const q=&x,那么q不能再指向別處,q,q--,--q是非法的。對指向函數(shù)的指針進行操作是沒有意義的。因為函數(shù)的大小不同并且不是連續(xù)存儲的,所以對指向函數(shù)的指針進行操作是非法的
這是一類特殊的運算符,即自動遞增和自動遞減運算符--對變量進行操作的結果是增加1和減少1。例如--coutercouter--amountamount在這些例子中,運算符前后的效果是相同的,它們都是加1或減1,但是當它們作為其他表達式的一部分時,它們之間就有區(qū)別。如果運算符放在變量前面,則變量在運算之前完成自增或自減運算;如果運算符放在后面,則在變量參與表達式運算之后執(zhí)行自增和自減運算。這可能不是很清楚。讓我們看看下面的例子:num1=4num2=8A=num1b=num2a=num1。一般來說,這是一項任務。將num1的值賦給a,因為自動遞增運算符在變量前面,所以num1首先從1增加到5,然后賦給a,最后a也是5。B=num2這是將num2的值賦給B,因為自動遞增運算符在變量后面,所以首先將num2賦給B,B應該是8,然后num2將從1增加到9。那么,我們?nèi)绾螒獙@種情況呢?C=num1 num2是C=(num1)num2還是C=num1(num2)取決于編譯器。不同的編譯器可能有不同的結果。所以我們在今后的編程中應該盡量避免上述復雜的情況。