我有以下宣告和函式呼叫:
unsigned int myArray[5] = {0, 0, 0, 0, 0};
ModifyArray(&myArray[0]);
以上代碼不能修改,按原樣給出。
我需要撰寫 ModifyArray 的實作來更新 myArray 以包含 1、2、3、4、5。
我把它寫成:
void ModifyArray(unsigned int * out_buffer)
{
unsigned int updatedValues[5] = {0, 0, 0, 0, 0};
updatedValues[0] = 1;
updatedValues[1] = 2;
updatedValues[2] = 3;
updatedValues[3] = 4;
updatedValues[4] = 5;
*out_buffer = &updatedValues;
}
這似乎并不奏效。我有一種感覺,我沒有在最后一行代碼中正確地進行賦值,但是我嘗試了多種變體,但它似乎仍然沒有只更新陣列的元素 0。
我究竟做錯了什么?謝謝!
PS:請注意,場景比此處介紹的要復雜。為了便于閱讀,我進行了簡化,但代碼看起來應該與此非常相似,如果可能,應該將最后一個分配更新為正確的分配。
uj5u.com熱心網友回復:
*out_buffer是一個unsigned int。
&updatedValues是一個unsigned int(*)[5]- 指向五個元素的陣列的指標 - 您不能將其分配給int.
你不應該分配任何陣列(這是不可能的),你應該修改給定陣列的內容:
void ModifyArray(unsigned int *out_buffer)
{
out_buffer[0] = 1;
out_buffer[1] = 2;
out_buffer[2] = 3;
out_buffer[3] = 4;
out_buffer[4] = 5;
}
您可以簡化為
void ModifyArray(unsigned int *out_buffer)
{
for (int i = 0; i < 5; i )
{
out_buffer[i] = i 1;
}
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/364519.html
