用引用作参数来得到多返回值

来源:百度知道 编辑:UC知道 时间:2024/09/25 10:26:02
我在主函数里先定义了一个数组a[8]。在子函数的参数列表了加了(&a)[8]作为参数之一,然后进行了一些处理,修改了数组中各元素。在主函数中调用了该子函数,然后再输出a[8]中各元素一看,为什么还是最开始定义时的初始值,而没有被引用修改呢?
代码太长了。我要用coordinates[8]记录一个矩形的四个角点的横纵坐标。
子函数部分:
字太多百度不允许。。。略,见图
主函数部分:
略。。。
int coordinates[8];
for(i=0;i<8;i++)
{
coordinates[i]=0;
}
if((fp=fopen("coordinates.txt","ab+"))==NULL)//a file to record the coordinates of rectangles
{
exit(1);
}
int regionnumber=1;//change here
for(regionnumber=1;regionnumber<=changed_label_count2;regionnumber++)
{
int areaofMER=MER(label,m_ImgRow_Big,m_ImgCol_Big,regionnumber,(&coordinates)[8]);

if(degreeofrectangle>=0.88&°reeofrectangle<=1.133)
{ printf("\nThis region is a rectangle!\n"); fwrite(coordinates,sizeof(int),8,fp);
}

写的到文件里全是0。但子函数中我加了语句看到数组中存的值是对的,为什么那些值就带不出来呢

不是吧, 数组元素是可以被修改掉的,贴你的代码, 要不你先试验下这个
#include<stdio.h>

void SetVal( int (&a)[8])
{
a[0] =1;
a[5] =5;
}

void main()
{
int a[8] = {0,1,2,3,4,5,6,7};

SetVal(a);
for(int i = 0; i < 8; i++)
{
printf("%d\t",a[i]);
}

printf("\n");
}

数组做函数参数是没有意义的。函数一律当做指针处理。
#include "stdio.h"

void fun (int * a)
{
int i;
for(i=0; i<4; ++i)
{
a[i] = 4-i;
}
}

void main(void)
{
int a[4] = {0, 1, 2, 3};
int i;
fun(a);
for(i=0; i<4; ++i)
{
printf("%d",a[i]);
}
getch();
}

我有一个解决方法,就是有结构体

程序附上