簡體   English   中英

如何將二維數組的隨機元素的引用傳遞給 c 中的 function?

[英]How to pass the reference of a random element of a 2d array to a function in c?

假設我有一個數組arr[6][6] 我有一個 function 假設int CalculateSum() 作為 function 的參數,我不想傳遞整個數組,但我想將arr[2][3]傳遞給CalculateSum 我怎樣才能做到這一點?

在 C 中,您不會只傳遞整個數組的引用。

如果要將引用傳遞給數組的特定元素,請使用&array[col][row]

例子:

int foo(int *val)
{
    return *val * *val;
}

int main(void)
{
    int a[5][5] = {{1,2,3,4,5},{12,22,32,42,52},{13,23,33,43,53},{14,24,34,44,54},{15,25,35,45,55}};

    printf("%d\n", foo(&a[3][2]));
}

arr[2][3]的地址就是&arr[2][3] 您可以將此地址傳遞給CalculateSum

例如,如果arr定義為float arr[6][6] ,則可以使用 int CalculateSum int CalculateSum(float *p)聲明 CalculateSum。 然后,當使用CalculateSum(&arr[2][3])調用時,例程可以使用*pp[0]訪問arr[2][3] 它還可以使用p[1]p[2]訪問arr[2][4]arr[2][5]

C 標准沒有正式定義超出當前行。 如果CalculateSum想要訪問arr[3][3] ,則 memory 地址名義上是p+6 ,因為arr的行有六個元素長。 C 標准沒有定義使用它來訪問arr[3][3] ,但編譯器支持它。 (Apple Clang 確實支持這種方式訪問多維 arrays。)

根據具體情況,您可能需要通過CalculateSum arguments 告訴它arr在 memory 中的布局方式(特別是它的行是六個元素長還是其他長度)以及它應該在每個維度上操作多少個元素。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM