c语言中调用函数的返回值,如果是数组,主函数要输出这个数组怎么实现啊

c语言中调用函数的返回值,如果是数组,主函数要输出这个数组怎么实现啊,第1张

指针,另外保存数据的变量退出函数时不得消失。

例如:

#include<stdioh>

int fun(int n)

{

int i;

static int a[100]; // 这里用static

for (i=0;i<n;i++) a[i]=i;

return &a[0];

}

void main()

{

int i,n=5;

int p; // 声明指针

p = fun(n); // 返回指针

for (i=0;i<n;i++) printf("%d\n",p[i]); // 把 p 看成数组来输出

}

得 0 1 2 3 4

扩展资料:

注意事项

1、数组的维度必须是一个常量表达式

int main(void)

{

constexpr int i = 20;

int j = 5;//不是常量表达式

int arr1[i];//正确

int arr2[j];//错误

system("pause");

return 0;

}

2、默认情况下,数组的元素被默认初始化。

而且需要注意的是,和内置类型的变量一样,如果在函数内部定义了某种内置类型的数组,那么默认初始化会令数组有未定义的值。

#include

void paixu(int array[],int len)

{

int t,i,j;

for (i=0;i<len-1;i++)

{

for (j=0;j<len-1-i;j++)

if (array[j]>array[j+1])

{

t=array[j];

array[j]=array[j+1];

array[j+1]=t;

}

}

}

int main ()

{

int in,i,array[128];

printf("输入一个正整数:");

scanf("%d",&in);

printf("输入%d个整数:\n",in);

for (i=0;i<in;i++)

{

scanf("%d",&array[i]);

}

paixu(array,in);

printf("排序后: ");

for (i=0;i<in;i++)

{

printf("%d ",array[i]);

}

return 0;

}

1、我们首先定义一个二级指针和一个行列变量[int array,row,column;]。

2、然后我们编写进入行和列的语句,代码如图所示。

3、接下来我们可以用一维数组打开一维一维数组。

4、接下来,我们使用[array [i] =(int )malloc(sizeof(int) column);]来为数组再次生成包含该数组的新数组。

5、然后我们可以为它赋值并输出[代码如图所示]。

6、运行程序后我们可以看到这种效果。

f(a+1)是调用函数f(int b[])。实参是a+1,就是数组a的第二个元素所在的位置。

本程序的输出结果是:

1

7

12

11

13

7

据此不难看出,函数f()是将数组a[1]开始的每一个小于等于10的元素,加上2后,重新输出。

对于有数组参数的函数,编译程序要为其开辟相应的内存空间,而程序中两个函数

都有数组参数a[n][m],由于n,m是变量,编译程序并不知道n,m的具体值,所以不能

通过编译。

修改:

1在#include<>下面添加以下伪指令:

#define n 5

#define m 5

2将函数的参数形式改为:

int sum(int a[n][m]);

void pl(int a[n][m]);

并按此修改程序文件中所有关于这两个函数的申明和调用即可

int x = 2

int y = F(x)

函数F里如果出现x=3,那么回归后主程序里x还是2,因为递给函数的只是个拷贝

如果

int x[] = {2,3}

int y = F(x)

这时递进去的是数组首地址,所以在函数里如果出现x[0]=1,那么主程序里的x也会变成{1,3}, 因为虽然函数拿到的x是一个拷贝,但因为它是地址,所以直接改变该地址的数据还是会有影响

错误太多了 1是getchar不是getschar

2 你的数组a与数组ar全乱套了 char w(char ar[4][6]);//13行你想传递谁?乱套了

3最严重的一点 数组不能作为函数参数传递 只有以下三种传递形式

按值传递(pass by value)

地址传递(pass by pointer)

引用传递(pass by reference)

想传递数组可通过指针 地址 你好好改 发个txt上来

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/langs/11671335.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-17
下一篇2023-05-17

发表评论

登录后才能评论

评论列表(0条)

    保存