首页 > 解决方案 > 如何通过将原始数组传递给c中的函数来修改原始数组

问题描述

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

#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][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]);
        }
    }
 }

我收到二维数组的错误

标签: c

解决方案


要拥有一个二维数组,请使用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;
}

推荐阅读