C语言编程 二维数组

Python016

C语言编程 二维数组,第1张

在C语言中,有时我们需要函数的返回值为一个二维数组。这样外部函数接收到这个返回值之后,可以把接收到的二维数组当成矩阵操作(外部函数不可用普通的一级指针接收返回值,这样的话,外部函数将不知道它具有二维性)。方法如下:

法1.没有使用typedef类型定义

[cpp] view plaincopy

#include <stdio.h>

int (*fun(int b[][2]))[2]

{

return b

}

int main()

{

int i,j

int a[2][2]={1,2,5,6}

int (*c)[2]

c = fun(a)

for(i=0i<2i++)

for(j=0j<2j++)

printf("%d ",c[i][j])

return 0

}

法2.使用typedef类型定义

[cpp] view plaincopy

#include <stdio.h>

typedef int (*R)[2]

R fun(int b[][2])

{

return b

}

int main()

{

int i,j

int a[2][2] = {1,2,5,6}

R c

c = fun(a)

for(i=0i<2i++)

for(j=0j<2j++)

printf("%d ",c[i][j])

return 0

}

使用typedef类型定义可以增加程序的可读性

这两种方法本质上是一样的

c[][1]={1,2,3} 根据初始化的数据,得出这个数组 有3行,每行1列。

等价于声明了: c[3][1]

所以 语句 要 用 for (x=0x<3x++) for (y=0y<1y++) { 来输出 c[x][y] }

而你用 了 y<3, 所以错了,

有c[0][0], 没有 c[0][1], 没有 c[0][2],

有c[1][0], 没有 c[1][1], 没有 c[1][2],

有c[2][0], 没有 c[2][1], 没有 c[2][2].

1、当成普通数组使用,用for循环即可赋值

2、例程:

#include

#include

int

main(void)

{

int

*a=NULL

int

i

a=malloc(sizeof(int)*10)/*动态创建一个有10个int元素的数组*/

if

(a==NULL)

{

/*a==NULL表示空间分配失败*/

fprintf(stderr,"MEMORY

ERROR")

return

-1

}

for

(i

=

0

i

<

10

i++)

{

a[i]=i

/*对数组进行赋值操作*/

}

free(a)/*动态分配的空间需要用free()函数释放*/

return

0

}