2011-12-11 47 views
-1

將指針傳遞給動態數組是否正確?它會起作用嗎?如果不是,解釋爲什麼,如果是的話,解釋爲什麼。謝謝。傳遞指向動態數組的指針

struct record 
{ 
    char * community_name; 
    double data[10]; 
    double crimes_per_pop; 
}; 

void allocate_struct_array(struct record *** r); 

int main() 
{ 
    /* allocating pointer to an array of pointers */ 
    struct record ** r; 

    /* passing its address to a function */ 
    allocate_struct_array(&(**r)); 
} 

/* function gets an address */ 
void allocate_struct_array(struct record *** r) 
{ 
    ... 
} 

我想要做的是分配一個指針數組,其中每個指針指向結構記錄。函數假設僅使用指向r的指針來分配此數組,該指針在main中聲明。正在玩這個代碼,但不能讓它工作。

+1

你試過了嗎? –

+1

我不知道代碼片段與問題有什麼關係。我真的不知道問題的含義是什麼。 –

+0

to @AndrewMarshall:是的,我試過了。 – user1090944

回答

1

在功能界面中,你只需要一個雙指針struct record **r,而不是一個三重指針。可以用struct record *array代表數組;所以一個指針是struct record **ptr_to_array

您可以使用&array調用該函數。

struct record 
{ 
    char * community_name; 
    double data[10]; 
    double crimes_per_pop; 
}; 

void allocate_struct_array(struct record **r); 

int main() 
{ 
    struct record *r; 
    allocate_struct_array(&r); 
} 


void allocate_struct_array(struct record **r) 
{ 
    *r = malloc(23 * sizeof(struct record)); 
    ... 
} 
2

我不知道你在做什麼,但至少你有一個編程錯誤。

allocate_struct_array(&(**r)); 

必須 -

allocate_struct_array(&r);