請教乙個C語言UB的作用機制?

時間 2021-05-14 09:50:16

1樓:趙硯瀟

cppreference在const限定符有明確的解釋,也有相似的例子, const 型別限定符

原答案說c++,是我激動了,不好意思。

原答案~

這是ub嗎?

這個應該報錯啊,至少是在gnu c++下是報錯的。

a是const int型別的,p是int*型別,怎麼可以指向const int型別的變數呢?

2樓:xxxxm

瀉藥。新手。錯誤見諒

在c++裡有頂層與底層指標的區別。c++為了避免宣告常量後還有頂層指標指向它。因為這是毫無意義的。

所以引入了臨時變數。這個應該是編譯器用了乙個臨時等值變數賦值給指標。所以當改變指標所指的量的時候實際上是改變了臨時量。

依稀記得c++primer對這個有較為詳細的解釋。c未深涉及,不清楚是否也是這種機制。根據你的圖應該是這樣的。

建議:這種簡單的例項可以看下彙編。一目了然編譯器幹了什麼。

3樓:三三白白

指標修改了位址中存放的值,但是因為a是const 程式預設值沒有改變所以根據不同的編譯器程式有可能不會讀取存入記憶體的值而是沿用初始化的值。

4樓:張建濤

具體這個例子,是因為常量傳播優化

多說兩句,研究UB行為的壞處大於好處,因為不是規範,你知道了也不能用。

萬一傻了吧唧 (這種人不少見,比如當年的我……) 把UB行為當成特性,用在工程實現上,害人害己!!!

為什麼一定條件下指標指向的物件的值發生了改變,物件本身卻沒有改變?

請教乙個C語言指標陣列問題?

郭建波 陣列指標 也稱行指標 定義 int p 10 優先順序高,首先說明p是乙個指標,指向乙個整型的一維陣列,這個一維陣列的長度是10,也可以說是p的步長。也就是說執行p 1時,p要跨過10個整型資料的長度。例 int p 4 該語句是定義乙個陣列指標,指向含4個元素的一維陣列。所以陣列指標也稱指...

關於C語言的乙個小問題?

黃小非 dir.h Defines structures,macros,and functions for dealing with if defined DIR H define DIR H include stddef.h if defined TCHAR H include endif if ...

覺得聲音好聽不好聽是乙個什麼機制的作用?

Derre 還是現簡單的說下聲音才好 聲音作為一種振動源發出在介質中傳播然後引起聽覺的豎波,一半有三個特性 響度 振幅 音調 頻率 和音色。前兩個性質是物理性質,客觀的存在。所以覺得聲音好不好聽一般和音色有關。音色本身是一種抽象的東西,是由因不同物體材料的特性而具有的聲音性質。人們對一種聲音的喜好大...