簡體   English   中英

返回指向多維數組的指針

[英]Returning a pointer to multidimensional array

假設我要創建一個多維數組,如下所示。

const int array_temp[3][2][1] = {
    [0] = {{0}, {1}},
    [1] = {{2}, {3}},
    [2] = {{4}, {5}},
};

該數組表示3個表,每個表2個條目。

我如何返回一個指向3個表之一的開始的指針? 會如下嗎?

return (void *)&array_temp[idx][0][0];

在3D情況下,一旦取消引用指針名稱,便會將我們引向第零行。 這意味着將idx添加到已取消引用的名稱將導致我們進入第idx行(其中idx> = 0)

return ((*array_temp)+idx);

但是請確保不要在函數內部聲明數組。 由於其持續時間到功能結束

嘗試return array_temp[idx] return array_temp[idx][0][0]將返回特定的內容,而不是(容器)數組本身。

我認為這個例子不言自明

#include <stdio.h> 

char arr[4][5][6];



int main(int argc, char *argv[]) {

    printf("%d\n\r", sizeof *(arr));
    printf("%d\n\r", sizeof *(arr[0]));
    printf("%d\n\r", sizeof *(arr[0][0]));
    printf("%d\n\r", sizeof *(&arr));
    printf("%d\n\r", sizeof *(&arr[0]));
    printf("%d\n\r", sizeof *(&arr[0][0]));

}

結果:

30
6
1
120
30
6

我認為沒什么可補充的

暫無
暫無

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

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