2014-03-31 60 views
0

作業問題:數組值是什麼?

鑑於數組雙X [3],什麼是x的「價值」?提供 可能的值。給定前一點的v值,x [0],x [1]和x [2]的地址是 。

個人方面的考慮:

在我看來一個數組的值是其收藏的物品。例如。

double x [3] = {8,9,88};

但這個問題會讓我覺得'值'是指數組的機器起始地址(數組的基地址)。

我的推理是正確的?你會給你什麼答案?

+0

」家庭作業問題:「請自己做作業。 – JakeGould

+0

我會在這裏說,價值是指一個地址。 –

+0

這感覺就像一個家庭作業問題。 – Zane

回答

1

沒有你的推理是不正確的。 x的值只是一個地址 - 數組中第一個元素的地址。至於x[0],x[1]x[2]的地址分別是x+0(或簡單地說是x),x + sizeof(double)x + sizeof(double) * 2

編輯:正如Joachim Isaksson指出的那樣,實際上x和裸指針之間存在一些差異。例如sizeof(x)是單個元素的數量的兩倍,大小爲x

+0

那麼......'double x [3]'給出sizeof(x)'爲24,而不是指針通常會做的4或8。這意味着x的值是24字節。 –

+0

@JoachimIsaksson我不知道你在說什麼。我的意思是我從來沒有使用'sizeof(x)'。 –

+0

'double * y;雙x [3]; std :: cout << sizeof(x)<<「 - 」<< sizeof(y)<< std :: endl;'在我的機器上給出了'24 - 8'。如果'x'的值是一個指針,'x'的大小不會和'y'的大小相同嗎? –

1

x本身是一個數組的左值,該數組在一個特定的存儲器地址中包含三個雙精度值。而已。

現在有許多情況下,這樣的值將被轉換爲指向該數組的第一個元素的「double指針」,但還有其他情況下,這種情況不會發生:當數組是操作數時sizeof,&(地址)或_AlignOf運算符。

所以如果有人說「x的值只是一個地址」,這是錯誤的,因爲sizeof(x)不是地址的大小,而是雙倍大小的三倍。 「