2015-08-21 85 views
2

如果我提到如何知道C中數組中元素的確切個數?

int ar[100]={1,1}; 

,我想知道的元素存在於它,而不是它的大小多少,什麼命令我應該使用?

+1

其餘98號以0填充。如果需要,可以使用循環來計算非零值。 – user3528438

+1

@ user3528438不一定。有可能是在那裏 – asdf

+2

@asdf http://stackoverflow.com/questions/201101/how-to-initialize-an-array-in-c – user3528438

回答

7

數組的情況下,大小總是元素的數量乘以每個元素的大小。一旦定義它們,它們都不會變化(元素的數量或大小)。

如果你的意思是,找出有意義(給你)數組中存在的元素,那麼,你需要有一個sentinel value地方(由此標記有效數據項的末尾),並使用一個循環,你需要自己計算有效元素。

+0

在'strlen()'的情況下,標記值是'\ 0'字節 – Jack

1

你應該實現某種計數器來跟蹤當前的元素數量爲你添加。有爲每個元素分配的內存,因此幾乎不可能嘗試找出有多少內存插槽已填滿。

2
int array[3] = {1,2}; //1,2,0 

由於默認將數組元素初始化爲0,因此可以將非零值計爲元素數。

但是,考慮

int array[4] = {0,1,2}; //0,1,2,0 

你需要一種方法來確定哪些零點是有意義的。可能最後的零是無用的。

但考慮

int array[4] = {0,1,0}; //0,1,0,0 

的0在array[2]是故意的。不同的球賽。這一切都取決於你確定哪些零。

1

只要不放棄它的大小,如:

int foo[]={1,2,3,4,5}; 

那麼編譯器將分配foo剛剛足以容納值在初始化列表中,所以當你sizeof(foo)/sizeof(foo[0])它會做你想要什麼,只要數組不衰減到指針。與硬編碼100相比,它實際上可以節省大量內存。

相關問題