說我有下面的代碼我爲什麼不能增加該值
int const *p = new int(5);
printf("%d",(*p)++);
現在它說,
error C3892: 'p' : you cannot assign to a variable that is const
爲什麼會出現這個錯誤?我明白,p是一個常量,但我只是試圖打印(* p)++,它是6不會增加p指向的地址中的內容。任何人都可以向我解釋究竟發生了什麼?
說我有下面的代碼我爲什麼不能增加該值
int const *p = new int(5);
printf("%d",(*p)++);
現在它說,
error C3892: 'p' : you cannot assign to a variable that is const
爲什麼會出現這個錯誤?我明白,p是一個常量,但我只是試圖打印(* p)++,它是6不會增加p指向的地址中的內容。任何人都可以向我解釋究竟發生了什麼?
操作(*p)++
在語法上等同於(*p) += 1
。也就是說,它試圖對原始變量進行賦值。編譯器抱怨,因爲你不允許修改const
變量。
在這種情況下,您聲明p
是指向const
而不是const
指針的指針。
相反,嘗試printf("%d", (*p)+1);
或者,你可以聲明p
作爲const
指針:int * const p
,但這樣會增加值由p
指向。
標記爲答案謝謝 – Rajeshwar 2014-09-25 05:07:23
變化這樣說:
int* const p = new int(5);
這意味着指針是恆定的。
int const *p = new int(5);
這意味着指針指向的是常量。
如果你這樣做的第一種方法,那麼你可以增加指針指向的值。
(* p)++取消引用指針並遞增值。所以你應該以我發佈的第一種方式。
只讀變量不可分配 – P0W 2014-09-25 05:02:23
您正在遞增的內容不是指針... – 2014-09-25 05:03:50