如何通过将原始数组传递给C中的函数来修改原始数组

时间:2019-07-14 14:02:15

标签: c

我需要通过将2d数组传递给函数来修改2d数组的代码,以便我在函数原始数组中编写的内容都应得到修改

#include<stdio.h>
void display(int *arr){
    for(int i = 0;i < 4;i++){
        printf(" %d " , arr[i]);
    } 
}
void modify(int *arr){
    arr[0] = arr[1]; 
}
int main() {
    int a[4] = {0,1,2,3};
    display(a);
    modify(a);
    display(a);
}
}

输出为 0123 1123 对于一维数组,如何为二维数组编码 ----------

#include<stdio.h>
void pass(int *arr,int n){
    arr[0][0]=arr[0][1];   
}
int main() {
   int n,i,j;
    scanf("%d",&n);
    int a[n];
    for(i=0;i<n;i++){
        for(j=0;j<n;j++){
            scanf("%d",&a[i][j]);
        }
    }
    pass(a,n);
    for(i=0;i<n;i++){
        for(j=0;j<n;j++){
            printf("%d",a[i][j]);
        }
    }
 }

显示二维数组错误

2 个答案:

答案 0 :(得分:1)

要使用二维数组,请使用a[n][n]
要将可变长度数组传递给函数,请传递大小int n,然后传递指向数组int (*arr)[n]的指针。

#include<stdio.h>

void pass ( int n, int (*arr)[n]){
    arr[0][0] = arr[0][1];
}
int main ( void) {
    int n,i,j;

    printf ( "enter array size\n");
    scanf ( "%d", &n);
    int a[n][n];

    for ( i = 0; i < n; i++) {
        for ( j = 0; j < n; j++) {
            printf ( "enter array[%d][%d] value\n", i, j);
            scanf ( "%d", &a[i][j]);
        }
    }

    pass ( n, a);

    for ( i = 0; i < n; i++) {
        for ( j = 0; j < n; j++) {
            printf ( "%d\t", a[i][j]);
        }
        printf ( "\n");
    }
    return 0;
}

答案 1 :(得分:0)

#include<stdio.h>
void pass(int arr[][100], int n) {
    arr[0][0] = arr[0][1];
}
int main() {
    int n, i, j;
    scanf_s("%d", &n);
    int a[100][100];
    for (i = 0; i < n; i++) {
        for (j = 0; j < n; j++) {
            scanf_s("%d", &a[i][j]);
        }
    }
    pass(a, n);
    for (i = 0; i < n; i++) {
        for (j = 0; j < n; j++) {
            printf("%d", a[i][j]);
        }
    }
}