作者descent (「雄辩是银,沉默是金」)
看板C_and_CPP
标题Re: [问题] 请问C语言函式回传二维阵列的问题?
时间Tue Dec 8 10:59:10 2020
TWOARRAY 是一个 function, return 一个 pointer,
这个 pointer 指向 int[4]
int (* TWOARRAY(void) ) [4]
{
//int **ptr2=(int**)malloc(3*sizeof(int*));
static int number[3][4]={{1,2,3,4},
{5,6,7,8},
{9,10,11,12}};
return number;
}
这个写法太复杂, 可以用 typedef
typedef int (*ARRAY2)[4];
ARRAY2 TWOARRAY(void)
{
}
这样比较容易理解。
※ 引述《SST2000 (BMW 428i)》之铭言:
: 各位C语言的强者
: 请问一下,我想要用C语言的函式回传一个二维阵列
: 但是不管我怎麽改,虽然可以执行正确但是就是会有警告
: 的讯息发生
: 请问我哪边需要强制转换或是修正呢???
: int * TWOARRAY(void);
: int main(int argc, char **argv)
: {
: int (*twoarr)[4]=TWOARRAY();
: for(int x=0;x<3;x++)
: {
: for(int y=0;y<4;y++)
: {
: printf("%d ",*(*(twoarr+x)+y));
: }
: printf("\n");
: }
: return 0;
: }
: int *TWOARRAY(void)
: {
: //int **ptr2=(int**)malloc(3*sizeof(int*));
: static int number[3][4]={{1,2,3,4},
: {5,6,7,8},
: {9,10,11,12}};
: return number;
: }
: 编译之後出现警告讯息
: initialization from incompatible pointer type
--
要有一流的运气, 才能邂逅一流的美女。
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 61.218.53.138 (台湾)
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/C_and_CPP/M.1607396356.A.8BA.html
1F:推 nh60211as: 推这篇 12/08 14:31
2F:推 wudidog: 应该不是太复杂 是太不直觉 因为阵列方括号得在名称之後 12/09 12:29
3F:推 jk842323: 推 12/09 21:49