以下為windows nt下的32位c++程式,請計算sizeof的值
void func (
char str[
100]
)void
*p =
malloc
(100);
sizeof
( p )
=?
參***:
sizeof( str ) = 4
sizeof ( p ) = 4
【剖析】
func ( char str[100] )函式中陣列名作為函式形參時,在函式體內,陣列名失去了本身的內涵,僅僅只是乙個指標;在失去其內涵的同時,它還失去了其常量特性,const屬性也沒了。可以作自增、自減等操作,可以被修改。
陣列名的本質如下:
(1)陣列名指代一種資料結構,這種資料結構就是陣列;
例如:
char str[10]
;cout << sizeof
(str) << endl;
輸出結果為10,str指代資料結構char[10]。
(2)陣列名可以轉換為指向其指代實體的指標,而且是乙個指標常量,不能作自增、自減等操作,不能被修改;
char str[10]
;
str++
;//編譯出錯,提示str不是左值
(3)陣列名作為函式形參時,淪為普通指標。
windows nt 32位平台下,指標的長度(占用記憶體的大小)為4位元組,故sizeof( str ) 、sizeof ( p ) 都為4。
知識點:
sizeof對陣列,得到整個陣列所佔空間大小。
sizeof對指標,得到指標本身所佔空間大小。
當陣列作為函式的形參時,實際傳遞的指向陣列首元素的指標。
牛客網C 刷題
今天刷了些c 的題,就其中物件導向分享一下我的感悟。首先區分一下物件導向和面向過程 物件導向是首先抽象出各種物件 各種類 把資料和方法都封裝在物件中 類 然後各個物件之間發生相互作用。面向過程是將問題分解成若干步驟 動作 每個步驟 動作 用乙個函式來實現,在使用的時候,將資料傳遞給這些函式。stl有...
牛客網刷題
時間限制 c c 1秒,其他語言2秒 空間限制 c c 262144k,其他語言524288k 64bit io format lld 立華奏在學習初中數學的時候遇到了這樣一道大水題 設箱子內有 n 個球,其中給 m 個球打上標記,設一次摸球摸到每乙個球的概率均等,求一次摸球摸到打標記的球的概率 e...
牛客網刷題
時間限制 c c 2秒,其他語言4秒 空間限制 c c 524288k,其他語言1048576k 64bit io format lld 立華奏是乙個剛剛開始學習 oi 的萌新。最近,實力強大的 qingyu 當選了 iods 9102 的出題人。眾所周知,iods 是一場極其毒瘤的比賽。為了在這次...