我尝试使用指针修改矩阵(将每个值乘以2)但我的代码不起作用。我已经看到了一些使用函数malloc
的示例,但我不确定在我的代码中它是如何必要的。
#include<stdio.h>
void changematrix(int **mm,int row, int column)
{
int i,j;
for( i = 0;i < row; i++)
{
for( j = 0; j < column; j++)
{
*(*(mm + i) + j) = 2* *(*(mm + i) + j);
}
}
}
int main()
{
int i,j;
int row, column;
printf("Type the number of row\n");
scanf("%d", &row);
printf("Type the number of columns\n");
scanf("%d",&column);
int mat[row][column];
printf("Now type the numbers\n");
for( i = 0; i < row; i++)
{
for( j = 0; j < column; j++)
{
scanf("%d", &mat[i][j]);
}
}
changematrix(&mat,row,column);
for( i = 0; i < row; i++)
{
for( j = 0; j < column; j++)
{
printf("%d ",mat[i][j]);
}
printf("\n");
}
}
答案 0 :(得分:3)
试试这个
void changematrix(int row, int column, int (*mm)[column])
{
int i,j;
for( i = 0;i < row; i++)
{
for( j = 0; j < column; j++)
{
mm[i][j] = 2* mm[i][j];
}
}
}
函数调用应该是这样的:
changematrix(row, column, mat);
答案 1 :(得分:0)
这将使s和l指向数组arr的元素。如果你只想要整数的值,那么替代方法是在main()中定义int变量并将它们的地址传递给func()......
void func(int arr[], int** s, int** l, int n){
/* snip */
*l = &arr[n-1];
*s = &arr[0];
}
func(arr, &s, &l, size);