在C编程中如何使用数组值分配的函数外的数组值?

时间:2015-11-03 23:34:37

标签: function

在我的程序中,我使用了一个名为

的函数
void printBoard(char board[26][26], int n);

这是我的实际编码:

#include <stdio.h>
#include <stdlib.h>
void printBoard(char board[26][26], int n);

int main(void) {
    //variable 'n' determines board dimension
    int n;
    printf("Enter the board dimension: ");
    scanf("%d",&n);
    char board[n][n];
    printBoard(board, n);
    printf("\n\n");
    for(int i=0;i<n;i++){
        for(int j=0;j<n;j++){
            printf("%c",board[i][j]);
        }
        printf("\n");
    }
        return (EXIT_SUCCESS);
}

void printBoard(char board[26][26], int n){
    printf("  ");
    for(int i=0;i<n;i++){
        printf("%c",97+i);
    }
    printf("\n");
    for(int i=0;i<n;i++){
        for(int j=0;j<n;j++){
            board[i][j]='U';
        }
    }
    board[(n/2)-1][(n/2)-1]='W';
    board[n/2][n/2]='W';
    board[(n/2)-1][n/2]='B';
    board[n/2][(n/2)-1]='B';
    for(int i=0;i<n;i++){
        printf("%c ",97+i);
        for(int j=0;j<n;j++){
            printf("%c",board[i][j]);
        }
        printf("\n");
    }
}

数组'board [26] [] 26'的值在函数'printBoard'中分配。因此,一旦我超出了此函数的范围,该值就会丢失。但我需要在此函数之外使用此数组的值。我怎么能这样做?

谢谢

1 个答案:

答案 0 :(得分:0)

您没有按值将数组传递到printBoard,您只是传递一个指针。函数的更改将持续超出函数,因为您正在修改相同的内存,而不是副本。如果您发现意外输出,则不是因为printBoard所做的更改导致范围问题。