1樓:迎風搖擺的樹葉
sizeof(arr1),arr1是陣列,arr1裡面是int變數 佔據4個位元組,所以3個變數佔據12個位元組。
int *source ,source是乙個指標,若是sizeof(source)之後你會發現是4 因為所有的指標都是大小為4
*source是指標所指向的元素,int型別 佔據4個位元組 所以等於4
2樓:
sizeof()這個函式,裡面是指標,結果都為4size_t sz1=sizeof(arr1);//sz1輸出等譯12
因為乙個int型佔4個位元組,所以arr1裡面有三個元素,所以是12sizeof得到的是其在記憶體中佔的位元組數
指標是用來存放位址的,它等於計算機內部位址匯流排的寬度。所以在32位計算機中,乙個指標變數的返回值必定是4
希望能到你。。。
3樓:藍騎士之阿強
sizeof(陣列名)求的是整個陣列的大小,即元素型別的大小乘以元素個數
source是乙個指標變數,其存放的是位址,而*source的值是陣列arr1的首位址,32位機的位址都是4個位元組
4樓:匿名使用者
size_t sz1=sizeof(arr1)是陣列大小,但是sizeof返回不是個數,而是大小,以位元組為單位。
size_t sz2=sizeof(*source);返回第乙個陣列值得大小。
5樓:匿名使用者
arr1的型別是int ,是陣列,你賦的值有三個int的,所以是3*4=12
*source的型別是int ,占有四個位元組。
6樓:匿名使用者
sizeof 是儲存物件名字所在的空間的大小.和實際存值的大小無關.
source 是個int型別的指標
7樓:無病呻吟
arr1的型別是3個元素的整型陣列,為3*4 =12個位元組
*source型別為整型元素,位4個位元組
8樓:匿名使用者
sizeof(arr1)是必須為12了,否則需要釋放空間的時候連系統都不知道有多大了。。
跟new出來的應該一樣吧
在c++中對陣列應用sizeof得到的是陣列的長度,對指標應用得到的是指標的長度。 求解釋?
9樓:匿名使用者
因為指標存在的是它指向的位址。。。所以對指標sizeof,得到的其實是這個位址的長度,不同機器可能同一程式可能得到不同長度。
sizeof陣列得到的是陣列的長度,就是陣列裡面元素的個數
10樓:匿名使用者
路過,補充一下
在32位的系統裡
sizeof(int)=4位元組
sizeof(long)=4位元組
在64位的系統裡
sizeof(int)=4位元組
sizeof(long)=8位元組,已在aix上驗證
11樓:
sizeof()求得實際是分配的記憶體空間, 對陣列sizeof其實不是他的長度,只有當陣列是字元陣列的時候才是,因為32位下,每個字元佔乙個位元組長度,如果是整型陣列sizeof的結果是 sizeof(int)* 陣列長度, 至於指標, 他是乙個指向變數的位址,本是在32位機器下占用4個位元組長度。 c++的長度單位是位元組。 當然除了用函式計算長度外, 當然可以人工計算,但是人工計算不一定正確, 不確定是多少為機器, 比如int ar[5]; 32位下人工計算是20.
但是機器計算比較好, sizeof(int) * 5 = 20
12樓:perfect小炒肉
樓上回答不錯,c++長度指的是變數,陣列,指標等在記憶體中占用的位元組數,c++長度可以手工計算,只需根據相就變數型別來推廣算,常見的資料型別如 short int ,int,long int,float,double等等,這些分別占用相應位元組數,計算機位數不同,占用位元組數也不大相同,如上的占用位元組數一般是
2,2,4,4,8。
比如定義:float a[5],則可計算:4*5=20位元組,跟sizeof得到的相同
c語言中sizeof 和strlen 用法上有什麼區別呢
延霞月 兩者都是返回位元組數,具體講前者返回的是位元組數,而後者返回的是字元數 其次,sizeof返回的數量包括最後的結束符 0 而strlen則沒有。 sizeof是操作符,不是函式。它後面的 並不是必須的,沒有歧意時就不必寫上了。sizeof操作符計算的是系統為它後面的變數或型別名分配的空間大小...
C語言中關於指標和陣列命名處的問題
空雪夢見 前者出錯的原因就和 int a 10 a 1 是一個道理。一個是可以往裡面存指標的陣列,一個是指向陣列的一個指標。後者,char month 是宣告 指向陣列的一個指標 的語法這種語法必須指定陣列的大小才能宣告。char month 是宣告 一個可以存指標的陣列 的語法,後面就適用 初始化...
c指標陣列問題,C 中關於指標陣列的問題。
typedef 是 定義一種資料型別 就好像內建的資料型別如 int 它僅是乙個定義,不產生例項物件,即不分配任何記憶體,怎麼能給它賦值呢?對陣列賦初值的方法用for迴圈,在這裡還可用memset nod的記憶體分配在動態棧上,所以值不能確定,要初始化,必須使用顯式的方式。cdma980的回答是對的...