1
これはCプログラミングの問題です。ポインタの指すメモリにアクセスできるように、2次元ポインタを関数外に転送する方法はありますか?
他の関数がf()
内に割り当てられたメモリにアクセスできるように、関数f()
の外に2次元のポインタを転送する必要があります。とき、私は> 1.
私は入力引数が本当に外関数で使用できるように、2-Dのポインタを行うにはどのように「ここでエラー」でセグメンテーションフォールトを得た
しかし、? *ba = (dp[0]);
に何か問題があるとは思わない。
なぜですか?
typedef struct {
char* al; /* '\0'-terminated C string */
int sid;
} strtyp ;
strtyp *Getali(void)
{
strtyp *p = (strtyp *) malloc(sizeof(strtyp)) ;
p->al = "test al";
p->sid = rand();
return p;
}
strtyp *GetNAl(void)
{
strtyp *p = (strtyp *) malloc(sizeof(strtyp)) ;
p->al = "test a";
p->sid = rand();
return p;
}
int *getIDs2(strtyp **ba, int *aS , int *iSz)
{
int *id = (int *) malloc(sizeof(int) * 8) ;
*idS = 8 ;
int length = 10;
int i ;
strtyp **dp = (strtyp **) malloc(sizeof(strtyp*)*length) ;
for(i = 0 ; i < length ; ++i)
{
dp[i] = GetNAl();
printf("(*pd)->ali is %s ", (*pd[i]).ali);
printf("(*pd)->sid is %d ", (*pd[i]).sid);
printf("\n");
}
*ba = (dp[0]);
for(i = 0 ; i < length ; ++i)
{
printf("(*ba)->ali is %s ", (*ba[i]).ali); // error here
printf("(*ba)->sid is %d ", (*ba[i]).sid);
printf("\n");
}
*aIs = length ;
return id;
}
DPが宣言されていますか? –
申し訳ありませんが、タイプミス、ありがとう – user1002288