-
1 # 髒話比謊話乾淨558
-
2 # 使用者6932020393854
c語言陣列中一個元素佔2位元組。
位元組(Byte)是計算機資訊科技用於計量儲存容量的一種計量單位,也表示一些計算機程式語言中的資料型別和語言字元。一個位元組儲存8位無符號數,儲存的數值範圍為0-255。如同字元一樣,位元組型態的變數只需要用一個位元組(8位元)的記憶體空間儲存。
-
3 # 不會游泳的驢
c語言中,定義陣列後可以用sizeof命令獲得陣列的長度(可容納元素個數)
如:
{
int data[4];
int length;
length=sizeof(data)/sizeof(data[0]); //陣列佔記憶體總空間,除以單個元素佔記憶體空間大小
printf("length of data[4]=%d", length ); //輸出length of data[4]=4
}
但,透過傳遞陣列名引數到子函式中,以獲得陣列長度是不可行的。如:
int getLength(int[] a){
int length;
length=sizeof(a)/sizeof(a[0]); //這樣是錯誤的,得到的結果永遠是1
return length;
}
因為,a是函式引數,到了本函式中,a只是一個指標(地址,系統在本函式執行時,是不知道a所表示的地址有多大的資料儲存空間,這裡只是告訴函式:一個數據儲存空間首地址),所以,sizoef(a)的結果是指標變數a佔記憶體的大小,一般在32位機上是4個位元組。a[0]是int型別,sizeof(a[0])也是4個位元組,所以,結果永遠是1。
因此,獲得陣列長度,只能在陣列定義所在的程式碼區中,採用以上方法,才可以達到效果。
-
4 # 使用者1279476002208967
有一個函式就是為了獲取陣列元素個數的:sizeof!原理是:sizeof獲取陣列的長度然後除以資料型別所佔的長度得到元素個數我簡單寫下程式碼:inta[100]={1,2,3,4};intlen=sizeof(a)/sizeof(int);printf("%d\n",len);以上為原來的回答,有錯誤:在給定陣列大小時候sizeof這個方法就不起作用了,我當時沒注意犯了錯誤有些誤人子弟了原諒我一年以後才來修改這個答案~我想了想int陣列預設全是0稱為初始化,姑且說非0為有效元素while(i<100){if(a[i]!=0)count++;i++;}遍歷,記錄字元陣列有結束符,只要找到結束符的位置就可以了
回覆列表
一般int型別佔4個位元組,陣列a中有5個int型別的元素,即有 4 * 5 = 20個位元組。
一般來說在C語言中對於陣列所佔的位元組,用sizeof運運算元獲取。
#include <stdio.h>
int main()
{
int a[5];
printf("陣列a所佔的位元組:%d\n", sizeof(a) );
return 0;
}