在我的程序中,我使用了一个名为
的函数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'中分配。因此,一旦我超出了此函数的范围,该值就会丢失。但我需要在此函数之外使用此数组的值。我怎么能这样做?
谢谢
答案 0 :(得分:0)
您没有按值将数组传递到printBoard
,您只是传递一个指针。函数的更改将持续超出函数,因为您正在修改相同的内存,而不是副本。如果您发现意外输出,则不是因为printBoard
所做的更改导致范围问题。