c语言函数返回二位数组 c语言函数返回两个数

C语言函数可以返回二维数组首地址吗

C语言中函数不能直接返回一个二维数组。但是可以通过其他方法实现类似功能:

创新互联是一家集网站建设,赵县企业网站建设,赵县品牌网站建设,网站定制,赵县网站建设报价,网络营销,网络优化,赵县网站推广为一体的创新建站企业,帮助传统企业提升企业形象加强企业竞争力。可充分满足这一群体相比中小企业更为丰富、高端、多元的互联网需求。同时我们时刻保持专业、时尚、前沿,时刻以成就客户成长自我,坚持不断学习、思考、沉淀、净化自己,让我们为更多的企业打造出实用型网站。

1、把二维数组定义为全局变量 这样可以直接在另一个函数中调用

2、把二维数组作为指针传入到第一个函数中 然后同样作为指针传到另一个函数中

3、动态分配内存 在赋值函数中动态分配 并用返回值返回,在另一个函数中进行访问

C语言怎样返回二维数组元素

#includestdio.h

void main(void)

{

int b[100] = ; /*用于计数的数组,数值为x的由b[x-1]显示*/

int max , *p ,num = 0,k1,Line = 0;

int i ,j ,k ,c[5] = ; /*c数组保存前五个数量最多的数字,p用于后面的出现多个相同的频数的数组*/

for(Line = 0 ; Line =900;Line+=100)

{

for( i = Line ;i100+Line ; i++)

for( j = 0 ; j 10 ; j++ )

b[ a[i][j] ]++; /*计数*/

/*下面找寻频率最高的5个数据,对b数组进行排序可以,不过排序后不再知道其原来的数据,要完成这个操作有两条路,一个是牺牲内存,即创造另外一个数组,进行排序,花费内存与b数组相同;二是多花时间,进行多次遍历搜索,下面采用第二种*/

for(j = 0; j5;j++)

for(i = 0 ; i 100 ; i++ )

max = 1;

k = 0;

if( max b[i] i!= lookup(i,c) ) max = b[i];/*lookup()函数的用法可以看一看*/

else if(max == b[i] ) k1++; /*当前最大值的数目自增*/

}

c[j] = max; /*保存第k大的元素*/

if(k1 != 0)

{ /*这里处理有相同的频率的几个数,我就不写了,内容是把这几个数都保存下来*/

j += k;

}

if(k + j 4) break; /*最大的五个元素没有找到,楼主的题意有些没理清除,我认为是重新开始计数没错,这个所谓的求有多少次就是这个道理,寻找符合条件的,如果100行内前五中第五名有并列的(当然有可能是三个第四名之类),就不再进行后面的是否这五个元素均存在的判断了*/

else if(k + j == 4 )

for(k1 = 0 ; k1 5 ; k1++ )

if( find(c[k1],a[i+Line],10) ) ; /*原型find(int x,int y[],int z),在y数组中寻找与x值相同的元素,y数组大小为z,这个应该不是难点,寻找到则返回非零值,否则返回0值*/

else break;

if(k1 == 5) num++; /*全部五个元素均找到,次数增加1*/

}

}

printf("次数为%d",num);

}

C语言 如何返回一个二维数组

1、函数不能返回一个数组,只能返回一个变量,或地址

。如果你想直接返回一个二维数组,这是做不到的。可以用下面的方法

,先建一个结构体。struct

array{int

a[3][3];};

array

solve(){array

a;return

a;}

通过这种方法,来得到二维数组。

2、数组在作为函数返回值或者函数参数时,实际上只作为指针来返回或者传递的。因此返回值用指针数据类型。比如下面的代码:int

g_a[4]

=

{1,2,3,4};

int

*

retn_arrary()

//返回值用指针类型即要。

{

return

g_a;

}

C语言函数如何返回二维数组?

你这个二维数组要动态分配的才行,不然存储周期只在他的函数里面有效

C语言中返回二维数组

如果是在main中动态获得数组的值,那么,最好在main里面创建数组,然后把数组传给fun进行修改,等fun返回以后,main获得的就是修改后的数组了。

void func(char array[1000][4])

{

array[5][2] = 100;

}

main()

{

char arr[1000][4];

fun(arr);

}

C语言如何让函数返回二维数组?

你本身传递的就是数组,并不需要返回数组,直接在你的函数内更改二维数组的值的就行了(注意,如果在是函数内创建的数组,再返回会有问题,出了函数这个变量就无效了),比如如下

#includestdio.h

void fun(int (*pIntPtr)[4]) {

*(*pIntPtr + 0)=20;//将a[0][0]改为20

*(*(pIntPtr+3) + 2)=30;//将a[3][2]改为30

}

int main() {

int A[4][4] = {{10,2,3,1},{12,4,5,1},{14,7,8,1},{15,9,2,1}};

int i,j;

fun(A);

for(i=0;i4;i++)

{

for(j=0;j4;j++) printf("%4d",A[i][j]);

printf("\n");

}

}


分享题目:c语言函数返回二位数组 c语言函数返回两个数
本文网址:http://myzitong.com/article/hgdeej.html