亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如下程序中,&a 替換為a,為什么報錯:

如下程序中,&a 替換為a,為什么報錯:

C
翻閱古今 2022-12-16 17:13:49
#include <stdio.h>#include <stdlib.h>typedef struct{int n; // the size of the arraydouble *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;}
查看完整描述

2 回答

?
收到一只叮咚

TA貢獻1821條經驗 獲得超5個贊

函數的定義,其參數必須是一個變量或者常量,而取址符&只是說明一個變量的地址,并不是這個變量的本身,所以你的程序中除主函數以外的所以函數的定義都不正確,就第一個函數InitArray,其定義說明應改為:

int InitArray( DArray *a )
{
a->n = 0;
a->pData = NULL;

return 1;
}
其他各函數仿此修改即可

查看完整回答
反對 回復 2022-12-21
?
牛魔王的故事

TA貢獻1830條經驗 獲得超3個贊

沒有仔細看你的代碼,
應該是傳統的值傳遞和地址傳遞的問題吧。

查看完整回答
反對 回復 2022-12-21
  • 2 回答
  • 0 關注
  • 116 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號