永发信息网

关于返回值为一个数组的问题

答案:1  悬赏:0  手机版
解决时间 2021-04-28 01:37

#include<stdio.h>
#define size 6

void main(void)
{
int a[size]={1,1,1,1,1,1};
int *fun(int *,int);
for(int i=0;i<size;++i)
{
printf("%d\n",*(fun(a,size)+i));
}
}

int *fun(int *a,int n)
{

for(int i=0;i<n;++i)
{
*(a+i)+=5;
}
return(a);
}

结果为:

6 11 16 21 26 31

由于

for(int i=0;i<size;++i)
{
printf("%d\n",*(fun(a,size)+i));
}
调用6次*fun(),所以造成这样的结果。而改成:

int *p;

p=*fun(a,size);
for(int i=0;i<size;++i)
{
printf("%d\n",*(p+i));
}

编译时提示出错。

请问:

1、主函数中该怎么做,才不至于多次用*fun(),但又能输出数组各个元素的值?

2、改int *p; p=*fun(a,size);编译为什么通不过(我的编译器为vc++ 6.0)如果

要改,该怎么做?

最佳答案

数组可以通过指针传递到函数中. 因为指针保存的是内存地址.所以数组就不需要再从函数返回了.


#include<stdio.h>
#define size 6


void main(void)
{
int a[size]={1,1,1,1,1,1};
void fun(int *,int);
fun(a,size);
for(int i=0;i<size;++i)
{
printf("%d\n",a[i]+i);
}
}


void fun(int *a,int n)
{
for(int i=0;i<n;++i)
{
*(a+i)+=5;
}
}



这样输出是6 7 8 9 10 11



上面就是不需要多次调用fun函数的方法.


关于int *p; p=*fun(a,size);为什么错误. 因为p=*fun(a,size);.改成p=fun(a,size);就没问题了.


指针当然得用指针赋值, 你对数组返回的值解引用后赋值给指针.这是错误的


********************************************************************************************************************


另外关于补充的第二个问题.p=fun(a,size);我在VC6中测试没有问题.


你可以把代码发上来看看.

我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
大饼卷鸡蛋好吃吗??
海贼王动画464怎么没更新?漫画停了?还是WT
王府井百货总府店在哪里啊,我有事要去这个地
天龙八部痛击会100%顶猛击吗
Windows Application Compatibility Toolkit
CAD怎么打印啊
江宁和金陵是不是全部都解释为南京?金陵十三
大茶杯吉大店我想知道这个在什么地方
不是原配的蓝牙耳机有什么影响
为什么男生不喜欢自己女朋友认哥哥呢?
如何才能只长高不长胖??
人的一生为的是什么?
什么是QQ会员?
在哪找POWERPOINT
手掌掌心处脱皮
推荐资讯
前往超克之时空中的创世神用了什么绝招
在重庆水货报价1000块以下的有哪些智能机?大
铠甲勇士图片
代表新生的东西有哪些?
最近最火的电视剧有那哪些???
杏红了是几月份
大学录取通知书里的中国农业银行卡怎么用?
梦幻西游四门FB问题
牙齿美容冠好吗?要多久时间?价格贵不贵
现在中东局势如何?
谁能帮我想一个祝福语?急!
网络游戏的名称字母简写问题!
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?