我似乎無法找到任何有關如何通過函數中的指針訪問數組的元素的信息,我嘗試了多個答案,但他們都沒有爲我工作。如何通過C中的指針訪問矩陣數組的元素?
我的任務是下一個:用維度爲m x n
的維度編寫一個程序,元素從0到9隨機生成。使用兩個新函數計算偶數元素的總和並計算等於零的元素數。
#include <stdio.h>
#include <stdlib.h>
void SumEven(int *a, int n, int m, int *sum){
}
void EqualToZero(int *a, int n, int m, int *number){
}
int main()
{
int** a;
int m, n, l, i, j, r, sum;
printf("Enter number of columns for matrix: ");
scanf("%d", &m);
printf("Enter number of rows for matrix: ");
scanf("%d", &n);
a = (int **) malloc(m*sizeof(int));
for (l = 0 ; l < m ; l++){
a[l] = (int **) malloc(n*sizeof(int));
}
time_t t;
srand((unsigned)time(&t));
printf("\n");
printf("Your matrix is:\n");
printf("\n");
for(i = 0 ; i < m ; i++){
for(j = 0 ; j < n ; j++){
r = rand() % 10;
a[i][j] = r;
printf("%d ", r);
}
printf("\n");
}
printf("\n");
SumEven(&a, n, m);
return(0);
}
正如你可以在提供的代碼中看到我留下的那些功能空的,因爲我不知道如何通過矩陣給他們,並訪問他們的內容,所以我可以能打印我的結果。
而且我對於該功能的邏輯僞代碼本身是:
if(a[i][j] % 2 == 0)
printf("%d ", a[i][j])
和
if(a[i][j] == 0)
printf("%d ", a[i][j])
同樣功能的這些參數在我的任務是預定義的,所以我要跟着他們。
編輯:我也不知道我是否甚至將相同的矩陣傳遞給函數SumEven(&a, n, m);
。我嘗試輸出矩陣的地址,並使用printf("%d", &a)
來顯示main()
和SumEven()
函數的地址。
1)不要用C投malloc'與朋友'的結果! 2)「矩陣通常與二維數組同步,在你的代碼中沒有像這樣的構造,沒有一個可以作爲一個使用; 3)使用二維數組;這是直接的語法。 – Olaf