Lỗi khi chạy code: error: invalid use of array with unspecified bounds

Cho em hỏi đây là lỗi gì và cách sửa với ạ
[Error] E:\c\C\a.c:39: error: invalid use of array with unspecified bounds
Em dùng hàm Mat để nhập vào mảng hai chiều A B và hàm Max để tìm Max của mảng tổng C

#include<stdio.h>
#include<conio.h>
int n;
void Mat(int);
int Max(int);
void main()
{
	int n,i,j;
	printf("Ma tran can tinh cap: ");
	scanf("%d",&n);
	int a[n][n],b[n][n],c[n][n];
	printf("\nNhap vao mang A\n");
	Mat(a);
	printf("Nhap vao mang B\n");
	Mat(b);
	for (i=0;i<=n;i++)
	for (j=0;j<=n;j++)
	c[i][j]=a[i][j]+b[i][j];
	printf("So lon nhat tren C la: %d",Max(c));
	getch();
}
void Mat(int S[][])
{
	int i,j;
	for (i=0;i<=n;i++)
	for (j=0;j<=n;j++)
	{
		printf("Nhap vao [%d][%d]: ");
		scanf("%d",&S[i][j]);
		printf("\n");
	}
}
int Max(int A[][])
{
	int i,j,M;
	M=A[0][0];
	for (i=0;i<=n;i++)
	for (j=0;j<=n;j++)
	if(M<A[i][j]) M=A[i][j];
	return M;
}
1 Like

Bạn dán code lên mới đoán được bệnh của nó cho chính xác nhé. Đoán không nhầm thì bạn đang lấy 1 giá trị nằm ngoài giới hạn của mảng.

E post code rồi a xem giúp e với

Code cả 1 tá lỗi.
+2 hàm Max Mat khai báo biến sai. 2 hàm thiếu biến n.
vd: void Mat(int S[][1000],int n){

}
Sửa lại cái trên :
void Mat(int S[][1000],int n);
Nếu chưa học con trỏ thì khai báo 2 mảng dư luôn đi cũng chẳng sao, bộ nhớ giờ nhiều mà.
vd: int a[1000][1000].
Với mảng thì i phải chạy từ [0,n).
vd for(int i=0; i< n;i++){

}
Mấy cái cơ bản vậy về sau thì nên tự đọc kĩ sách rồi tự tìm lỗi chứ đừng nên hở chút là hỏi như z.

À không để ý biến toàn cục, nếu có biến toàn cục n rồi thì không cần khai báo n trong hàm main.
Nên sửa lại là int main, để void thường bị 1 số trình biên dịch bắt lỗi.

Bạn sai ở chổ là khai báo biến toàn cục n và trong hàm main bạn lại khai báo 1 biến cục bộ n. Vì vậy khi bạn sử dụng hàm, bạn đang sử dụng n toàn cục, bản thân n chứa giá trị rác vài không được gán giá trị đầu vào cho nó nên => lỗi. Vì bạn nhập là nhập n trong hàm main nên đó là n cục bộ trong hàm main thôi

Cách khắc phục là bạn xóa khai báo n ở hàm main đi. Nhưng mình khuyên bạn nên hạn chế việc dùng biến toàn cục như vậy. Bạn nên khai báo n ở hàm main và truyền nó vào trong hàm để xử lý, như vậy sẽ dễ dàng quản lí hơn.

83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?