[英]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.