int main()
에 전역 변수로 정의한 행렬 a[][]
을 변수로 초기화하지 않았습니다. I 및 적절한 범위 J 모든이를 인수 매트릭스 a
으로 수신하여 특정 값 (랜덤)로 a[i][j]
을 정의C의 매트릭스 : 함수가 로컬 변수를 공유합니까?
첫번째는 :
그러면 I 일부 기능을 사용했다. 이 함수는 단순히 1을 반환합니다.두 번째 것 : 행렬
a
을 인수로 받고 단순히 인쇄합니다. 또한이 함수는 단순히 1을 반환합니다.마지막 : 인자 행렬
a
로 수신하고, 소박, 생각
값의 값과 리턴 최대 결정 그 일부 포인터를 정의하지 않고 명백히 코드를 작성 행렬의 변수를 모든 함수에서 전역 및 공유 가능하게 만들려면 코드가 간단하게 작동하지 않았을 것입니다. 그러나 효과가있었습니다. 전 세계적인 방법으로 행렬을 정의하지 않았기 때문에 효과가 없을 것이라고 생각했지만 기능에서는 만으로 정의 된 다음 다른 기능으로 전달하는 것처럼 가장합니다.
제 질문은 : 왜 효과가 있었습니까?
코드 :
int matrix_definition(int a[][], int dim);
int matrix_print(int a[][], int dim);
int max_matrix(int a[][],int dim);
int main()
{
int a[][], dim;
matrix_definition(a,dim);
matrix_print(a,dim);
printf("%d", max_matrix(a,dim));
return 0;
}
주()와 matrix_definition을 포함한 전체 코드는 이것이다 : 당신이 게시
#include<stdio.h>
#define SIZE 100
int matrix_definition(int a[SIZE][SIZE], int dim);
int matrix_print(int a[SIZE][SIZE], int dim);
int max_matrix(int a[SIZE][SIZE],int dim);
int main()
{
int a[SIZE][SIZE], dim;
matrix_definition(a,dim);
matrix_print(a,dim);
printf("%d", max_matrix(a,dim));
return 0;
}
int matrix_definition(int a[SIZE][SIZE],int dim)
{
int i,j;
srand(time(NULL));
for(i=0;i<dim;i++)
{
for(j=0;j<dim;j++)
{
a[i][j]=rand()%2;
}
}
return 1;
}
정의되지 않은 동작에 오신 것을 환영합니다. 컴퓨터를 크래킹하지 않고 정의되지 않은 메모리 영역에 쓸 수 있다면 아마 다시 읽을 수 있습니다. –
이 코드는 전혀 컴파일되어서는 안됩니다. – dbush
'int main()'에서 전역 변수로 정의했습니다. 그렇지 않았습니다. –