關於c 中sizeof用法和陣列指標問題

時間 2021-08-30 09:32:05

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的回答是對的...