**aの先頭アドレスの渡し方 – プログラミング – Home

**aの先頭アドレスの渡し方
 
通知
すべてクリア

[解決済] **aの先頭アドレスの渡し方


tm
 tm
(@tm)
ゲスト
結合: 23年前
投稿: 5
Topic starter  

データの数が多すぎて、配列に入りきらないので、
new/deleteやmallocで、領域を確保しようとして、
以下のようなプログラムを作りました。

double **x,*y;
/*データの数を入力*/
printf(馬のパターン数は? );
scanf(%d, &uma/*n*/);
printf(属性の数は? );
scanf(%d, &zoku/*m*/);
/* 領域の確保*/
x = new double * [uma];
y = new double [uma];
for(i1=0; i1<zoku; i1++){
x[i1] = new double [zoku];
for(i2=0;i2<zoku;i2++){
if(i2==0)
x[i1][0]=1;
else
x[i1][i2] = 2.5;

}
}
for(i1=0;i1<uma;i1++){
y[i1]=3.5;
}

と、したら、xとyの領域は確保できました。

例えば、
a(double *i); /*行列Aの先頭のアドレスをiに引きわたす*/
関数があって、
double A[][3]の配列だったら、
a(A[0]);
というように呼び出せば、行列Aの先頭のアドレスが
iに引きわたるのですが、

同じようのことを、上で定義したxとyでも、
やりたいのですが、
どうすればいいですか?

よろしくお願いいたします。


引用未解決
トピックタグ
kazuma
 kazuma
(@kazuma)
ゲスト
結合: 24年前
投稿: 217
 

int n=10;
int m=10;
int i;

double **pp = new double*[n];
double *p = new double[n*m];

for (i=0 ; i<n ; i++) {
pp[i] = &p[n*i];
}

こういうことでしょうか?
pp[0] または p を関数に渡せば要素数 (n*m) の1次元配列のように扱えます。


返信引用
tm
 tm
(@tm)
ゲスト
結合: 23年前
投稿: 5
Topic starter  

kazumaさん、ありがとうございました。
解決いたしました!


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

プレビュー 0リビジョン 保存しました
共有:
タイトルとURLをコピーしました