2017-09-16 57 views
-2

我正試圖潛入一點C編程。所以我試圖用雙指針創建一個二維數組並用隨機值初始化它。在訪問階段但是它拋出一個分段錯誤C 2-d數組初始化拋出段錯誤

下面是我的代碼條紋下來片段:

int main(void){ 

// Memory allocation for arrays 

int size = 3; 

double **matrix = (double **)malloc(sizeof(double *)*size*size); 

int i, k; 

for(i=0; i<size; i++){ 
     for(k=0; k<size; k++){ 
     matrix[i][k] = ((double)rand())/1314.7; 
     } 
} 

return 0; 
} 

可否請你指出我什麼我做錯了嗎?

+0

http://www.geeksforgeeks.org/dynamically-allocate-2d-array-c/ – NiVeR

+1

你有什麼是*不是一個2D數組,所以請不要像一個初始化它。 –

+0

順便說一句,https://stackoverflow.com/questions/605845/do-i-cast-the-result-of-malloc?rq=1 – Jens

回答

-1

這個指針的指針表,你需要在真正的代碼,你需要檢查的malloc沒有雙打:)

double *matrix = malloc(sizeof(double)*size*size); 

int i, k; 

for(i=0; i<size; i++){ 
     for(k=0; k<size; k++){ 
     matrix[i * size + k] = ((double)rand())/1314.7; 
     } 
} 

**

double **matrix = malloc(sizeof(double *)*size); 

for(int i = 0; i < size; i++) 
    *(matrix + i) = malloc(sizeof(double) * size); 

for(i=0; i<size; i++){ 
     for(k=0; k<size; k++){ 
     matrix[i][k] = ((double)rand())/1314.7; 
     } 
} 

當然的表失敗等等

+0

沒有你的節目(沒有解釋,順便說一句)是一個二維數組。 OP想要一個二維數組,所以他應該使用一個。 – Olaf

+0

不清楚他想要什麼。我看到了'*'和mallics。所以我走了指針的道路。 @你當然知道:D –

+0

如何使用指針/動態分配防止使用2D數組? – Olaf