猿问

如下程序中,&a 替换为a,为什么报错:

#include <stdio.h>
#include <stdlib.h>

typedef struct
{
int n; // the size of the array
double *pData; // the data of the array
}DArray;

//double pData[100];

int InitArray( DArray &a );
int SetArraySize(DArray &a, int size );
int FreeArray(DArray &a );
int SetValue( DArray &a, int k, double value );
int PrintArray(DArray &a );

void main()
{
DArray pa;

InitArray( pa );

SetArraySize( pa, 3 );
SetValue( pa, 0, 1.0 );
SetValue( pa, 1, 2.0 );
SetValue( pa, 2, 3.0 );

PrintArray(pa);

FreeArray(pa);
}

int InitArray( DArray &a )
{
a.n = 0;
a.pData = NULL;

return 1;
}

int SetArraySize( DArray &a, int size )
{
a.n = size;
a.pData = (double*)malloc( size * sizeof(double) );
if( a.pData == NULL )
{
printf("no enough memory!\n");
return 0;
}

return 1;
}

int FreeArray(DArray &a)
{
if( a.pData != NULL )
{
free( a.pData );
a.pData = NULL;
}

return 1;
}

int SetValue( DArray &a, int k, double value )
{
if( a.pData == NULL )
return 0;

if( k<0 || k>=a.n ) 
return 0;

a.pData[ k ] = value;
return 1;
}

int PrintArray(DArray &a)
{
if(a.n==0) 
return 0;

if( a.pData == NULL )
return 0;

for( int i=0; i<a.n; i++) 
{
printf("%lf \n", a.pData[i] );
}

return 1;
}

翻阅古今
浏览 126回答 2
2回答

收到一只叮咚

函数的定义,其参数必须是一个变量或者常量,而取址符&只是说明一个变量的地址,并不是这个变量的本身,所以你的程序中除主函数以外的所以函数的定义都不正确,就第一个函数InitArray,其定义说明应改为:int InitArray( DArray *a ){a->n = 0;a->pData = NULL;return 1;}其他各函数仿此修改即可

牛魔王的故事

没有仔细看你的代码,应该是传统的值传递和地址传递的问题吧。
随时随地看视频慕课网APP
我要回答