嗨,我在嘗試管理以下陣列時遇到了麻煩。我已經初始化了這個指標int* coordenadasFicha = new int[2];,我想分配這兩個int向用戶詢問數字。當我呼叫pedirCoordenadasFicha(coordenadasFicha);Clion 推薦我強制轉換時出現問題coordenadasFicha,int**但我需要將它用作一個簡單的指標。pedirCoordenadasFicha() 基本上是這樣做的:
void pedirCoordenadasFicha(int* coordenadasFicha[2]){
std::cin >> *coordenadasFicha[0];
std::cin >> *coordenadasFicha[1];}
歡迎所有幫助
uj5u.com熱心網友回復:
一個int*(指向int 的指標)和一個int*[](指向int 的指標陣列)是兩個不同的東西。實際上,在函式引數中,int* coordenadasFicha[2]實際上是作為int**(pointer to pointer-to-int)傳遞的,因為陣列衰減為指向其第一個元素的指標。
在您的情況下,您正在創建scoordenadasFicha的動態陣列int,但您的函式需要一個int*指標陣列。
因此,要執行您正在嘗試的操作,您需要執行以下任一操作:
void pedirCoordenadasFicha(int* coordenadasFicha){
std::cin >> coordenadasFicha[0];
std::cin >> coordenadasFicha[1];
}
int* coordenadasFicha = new int[2];
pedirCoordenadasFicha(coordenadasFicha);
...
delete[] coordenadasFicha;
或這個:
void pedirCoordenadasFicha(int* coordenadasFicha[2]){
std::cin >> *coordenadasFicha[0];
std::cin >> *coordenadasFicha[1];
}
int** coordenadasFicha = new int*[2];
for(int i = 0; i < 2; i) {
coordenadasFicha[i] = new int;
}
pedirCoordenadasFicha(coordenadasFicha);
...
for(int i = 0; i < 2; i) {
delete coordenadasFicha;
}
delete[] coordenadasFicha;
或者,new完全擺脫,并通過參考傳遞陣列:
void pedirCoordenadasFicha(int (&coordenadasFicha)[2]){
std::cin >> coordenadasFicha[0];
std::cin >> coordenadasFicha[1];
}
int coordenadasFicha[2];
pedirCoordenadasFicha(coordenadasFicha);
...
uj5u.com熱心網友回復:
我需要將它用作一個簡單的指標。
int* coordenadasFicha[2]不是“簡單指標”,如果您指的是簡單指標int*。在任何其他背景關系中,coordenadasFicha將是一個指標陣列,但函式引數不是 C 中的陣列;引數被調整為指向此類陣列元素的指標。陣列的元素 isint*和指向int*is的指標int**。因此型別coordenadasFicha是int**(調整后)。
如果您希望引數具有 type int*,則必須宣告引數具有該型別int*而不是其他型別。例子:
void
pedirCoordenadasFicha(int* coordenadasFicha)
{
std::cin >> coordenadasFicha[0];
std::cin >> coordenadasFicha[1];
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/315008.html
