2013-01-08 77 views

回答

2

它會清除令牌,它是100個指針的數組,而不是這些指針指向的內存。

3

它是有效的,但不是很有用,因爲設置一堆指針到所有位零的結果沒有很好地定義。不能保證NULL指針看起來(在內存中)爲「所有位零」,所以這是不好的做法。

不,這不是填充「隨機」存儲器,它正好填充tokens陣列佔用的內存。

1

我會重新寫memset的位爲:

memset(tokens, 0, sizeof(tokens)); 

因爲你做了什麼實際分配零到陣列中的所有指針。否則代碼是有效的,但我不確定它是否符合你的期望。

1

它是有效的代碼(除了n在示例中未定義)。

memset像這樣初始化。你正在清零整個tokens變量。這不是一個隨機的位置。在你的例子中,它也不是強制性的。

另外,還要注意strtok返回令牌的副本,而是修改tempVar並返回指向它的元素。如果tempVar超出範圍,tokens元素指向的內存位置將變成懸空指針,並且取消引用它們將調用未定義的行爲。

相關問題