程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> 關於C語言 >> 程序員面試50題—sizeof的用法(6),50sizeof

程序員面試50題—sizeof的用法(6),50sizeof

編輯:關於C語言

程序員面試50題—sizeof的用法(6),50sizeof


以下為Windows下的32 位C++程序,請計算sizeof 的值
void Func ( char str[100] )
{
sizeof( str ) = ?
}
void *p = malloc( 100 );
sizeof ( p ) = ?
解答:
sizeof( str ) = 4
sizeof ( p ) = 4
剖析:
Func ( char str[100] )函數中數組名作為函數形參時,在函數體內,數組名失去了本身的內涵,僅
僅只是一個指針;在失去其內涵的同時,它還失去了其常量特性,可以作自增、自減等操作,可以被
修改。
數組名的本質如下:
(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。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved