2012-10-24 64 views
0

我有一個函數,產生0和2之間的隨機數字,我想使用指針,但無論如何,我無法執行它。 首先我產生隨機號,然後我要打印的多維數組,看看它已經產生 我只是想隨機數分配給數組(使用指針),然後再使用指針在c中的多維數組的指針

int **RandomizedMatrix; //integer multidimensional array   
int ***AdressOfMatrix = &RandomizedMatrix; //assigning the adress of matrix to an integer pointer 

void RandomizedMatrixGenerator(int LineNumber,int ColumnNumber,int ***AdressOfMatrix) 
{    
    int i,j; 
    for (i=0; i<LineNumber*ColumnNumber; i++) 
    { 
     **AdressOfMatrix = rand()%2;   
    } 
    for (i=0; i<LineNumber; i++) 
    { 
     for (j=0; j<ColumnNumber; j++) 
     {      
      printf("%d",***(AdressOfMatrix+i)+j); 
     } 
     printf("\n"); 
    } 
} 
+1

我不知道該怎麼幫你想比被告知,你是對另一方面,你需要學習如何使用指針。我敢肯定,如果您將「指針C」打入搜索引擎,您會發現很多關於它們的網頁。 (提示:你必須讓它們指向某個東西。) –

+0

你有關於指針的具體問題嗎?這是一個很大的話題。 – Mike

+0

我只是想隨機數字分配給一個數組(使用指針),然後再次使用指針打印它們 – saidozcan

回答

0

如果我的理解是正確的,你要填寫你的2維陣列1和0,所以你能做到這一點

void randmtrgen(int row,int column,int **mtr){ 
    int i,j; 
    for (i=0;i<row;i++){ 
     for (j=0;j<column;j++){ 
      mtr[row][column]=rand()%1+1; 
      } 
     } 
    } 

如你所願,將填補你的矩陣我建議,如果你不擅長用方括號大多是罰款你不要引用操作使用。 如果你有一種衝動,使用引用操作,您可以使用該行

*(*(mtr+row)+column)=rand()%1+1; 
0
打印出來

OK,所以你要分配的隨機數,你需要兩個for()循環:

for (i=0; i<LineNumber*ColumnNumber; i++) 
{ 
    **AdressOfMatrix = rand()%2; 
} 

這都要做的是分配LineNumber*ColumnNumber次數的矩陣數字的第一個元素。如果你想這樣做,你需要在分配時增加行和列。

此外,你的「隨機」數字不會隨機的,因爲你沒有種子它。這裏有你想要做什麼的例子:

srand((unsigned) time(NULL)); // Seed the random number generator 

    for(row = 0; row<LineNumber; row++){ 
    for(col = 0; col<ColumnNumber; col++){ 
     ran = rand()%100;   // Generate a randome numer 1-99 
     *(*(matrix+row)+col) = ran; // assign a random number to the element 
    } 
    } 

    for(row = 0; row<LineNumber; row++) { 
     for(col = 0; col<ColumnNumber; col++){ 
     printf("[%d]", *(*(matrix+row)+col)); //Display the random number 
     } 
     printf("\n"); 
    } 

所以給出的4x3矩陣,你可以得到一個輸出,如:

[99][33][38] 
[59][2][28] 
[50][39][2] 
[85][45][99]