2013-02-27 72 views
0

爲什麼在使用const指針時,必須在cout子句中添加&。我在下面的代碼中。如果我不添加&條款它說illegal structure operation爲什麼const指針中的非法結構操作?

int Marks [10]= {1, 2, 3, 4, 5, 6, 7, 8, 9, 0}; 
// Create a constant pointer to Marks array 
const int* pMarks = Marks; 
for (int i = 0, bytes = 0; i < 10; ++i, bytes += 4) 
{ 
    cout << "Element " << i << ": " << pMarks <<" + "; 
    cout << bytes << " bytes" << " = " << (pMarks + i) << endl; // that & is required before (pMarks + i) 
} 


我想我輸出將是這樣的: 標準輸出:

元素0:0x7fff1d26d6c0 + 0字節= 0x7fff1d26d6c0
要素1:0x7fff1d26d6c0 + 4個字節= 0x7fff1d26d6c4
元素2:0x7fff1d26d6c0 + 8字節= 0x7fff1d26d6c8
元素3:0x7fff1d26d6c0 + 12字節= 0x7fff1d26d6cc
元素4:0x7fff1d26d6c0 + 16字節= 0x7 fff1d26d6d0
元素5:0x7fff1d26d6c0 + 20個字節= 0x7fff1d26d6d4
元素6:0x7fff1d26d6c0 + 24個字節= 0x7fff1d26d6d8
元素7:0x7fff1d26d6c0 + 28個字節= 0x7fff1d26d6dc
元素8:0x7fff1d26d6c0 + 32個字節= 0x7fff1d26d6e0

+1

似乎工作[這裏](http://liveworkspace.org/code/3SVhNh$0)。我錯過了什麼嗎? – 2013-02-27 15:04:27

+4

這個'&'你在哪裏提到? – juanchopanza 2013-02-27 15:04:56

+0

你想看到一個int組成字節?或者你是否正在嘗試使用指針運算來查看向量中的值? – neagoegab 2013-02-27 15:14:35

回答

1

什麼

cout << bytes << " bytes" << " = " <<*(pMarks + i) << endl; 

否則你會從pMarks + i傳遞地址。

+0

pMarks是一個int指針,「字節」將不會正確顯示... – neagoegab 2013-02-27 15:11:10

+0

@neagoegab是這個修飾符的cout?但感謝您的評論。 – 2013-02-27 15:13:03

+0

這是工作,但我想我的輸出將是這樣的: 標準輸出: 元素0:0x7fff1d26d6c0 + 0字節= 0x7fff1d26d6c0 要素1:0x7fff1d26d6c0 + 4個字節= 0x7fff1d26d6c4 要素2:0x7fff1d26d6c0 + 8個字節= 0x7fff1d26d6c8 元件3:0x7fff1d26d6c0 + 12個字節= 0x7fff1d26d6cc 元件4:0x7fff1d26d6c0 + 16個字節= 0x7fff1d26d6d0 元件5:0x7fff1d26d6c0 + 20個字節= 0x7fff1d26d6d4 元件6:0x7fff1d26d6c0 + 24個字節= 0x7fff1d26d6d8 元件7:0x7fff1d26d6c0 + 28個字節= 0x7fff1d26d6dc 元素8:0x7fff1d26d6c0 + 32字節= 0x7fff1d26d6e0 – 2013-03-05 14:29:44

相關問題