假設我想給一個指針賦值。在指針中賦值的麻煩
int **a;
int** function(x){
int **b;
...
return b;
}
這可能嗎?
a=function(x);
我很困惑。請讓我知道它。 我檢查了所有的行,但只有指針分配似乎是錯誤的。所以,在這裏不用的問題代碼(這可能是複雜的看,但我通過評論簡化它,請參閱註釋):
int* side_x_y(int ndx, int ndy,int flag_right_0_left_1_2,int flag_up_0_down_1_2){
int * node_number=(int*)malloc(sizeof(int)*(ndx*ndy*2+1));/// ***this pointer returns to segment_matrix function***///////
for(int i=1;i<=ndx*ndy*2;i++){
node_number[i]=0;
}
//int node_number[ndx+ndy]={};
//memset (node_number, 0, (ndx+ndy)*sizeof (int));
if(flag_up_0_down_1_2==0){
for(int i=1;i<=ndx;i++){
node_number[i]=i;
}
}
if(flag_up_0_down_1_2==1){
for(int i=1;i<=ndx;i++){
node_number[i]=(ndy-1)*ndx+1+i;
}
}
if(flag_right_0_left_1_2==0){
for(int i=1;i<=ndy;i++){
node_number[i]=ndx*i;
}
}
if(flag_right_0_left_1_2==0){
for(int i=1;i<=ndy;i++){
node_number[i]=1+ndx*(i-1);
}
}
return node_number;
}
int** segment_matrix(int ndx,int ndy){
int *nodes;
nodes=side_x_y(ndx, ndy,1,2);////*** here i have used nodes pointer***//// it returns only 1 where it should not be one///
//for(int i=0;i<ndy;i++)
//printf("%d",nodes[i]);
int ns=ndy-1;
int **segment=(int**)malloc(sizeof(int)*(ns+1));
for(int s=1;s<=ns;s++){
segment[s]=(int*)malloc(sizeof(int)*(2+1));
}
int kk=0;
for(int s=1;s<=ns;s++){
for(int i=1;i<=2;i++){
segment[s][i]=nodes[kk];
kk++;
if(i==2){
kk--;
}
}
}
return segment;
}
裏面的主要功能:
int **nss;
nss=segment_matrix(ndx,ndy);////*** it is the most confusing part***/// please see
//printf("%d",nss[0][0]);
int Ns=ndy-1;
double bv_T_g=0;
double bv_T_q=0;
Complex *gamma=(Complex*)malloc(sizeof(Complex)*(Ns+1));
Complex *q=(Complex*)malloc(sizeof(Complex)*(Ns+1));
for(int i=1;i<=Ns;i++){
gamma[i]=assign_complex(bv_T_g,0);
q[i]=assign_complex(bv_T_q,0);
}
int** ns=(int**)malloc(sizeof(int*)*(Ns+1));
for(int i=1;i<=Ns;i++){
ns[i]=(int*)malloc(sizeof(int)*(2+1));
}
for(int i=1;i<=Ns;i++){
for(int j=1;j<=2;j++){
ns[i][j]=0;
}
}
這看起來OK。你確切的問題是什麼? – Mat
'int ** function(x)'?我假設你有'x'的數據類型? – Mehrdad