Exception class EAccessViolation with message 'Access Violation' - C (СИ)
Формулировка задачи:
#include <stdio.h>
#pragma hdrstop
#include <stdlib.h>
#include <conio.h>
float **A, *B, *X;
int n;
int i, j;
int inputmatrix(float **, float *, int);
//int printmatrix(float **);
int main() {
printf("Vvedite razmer matricu: ");
scanf("%d",&n);
inputmatrix(A,B,n);
getch();
return 0;
}
int inputmatrix(float **A, float *B, int n) {
A = malloc(n*n*sizeof(float));
B = malloc(n*sizeof(float));
printf("Vvedite elementu osnovnoy matricu %dx%d:\n",n,n);
for (i = 0; i < n; i++) {
for (j = 0; j < n; j++) {
scanf("%f",&A[i][j]); // <<< ЗДЕСЬ
}
}
return 0;
}
First chance exception at $76AAB727. Exception class EAccessViolation with message 'Access Violation'. Process lab6.exe (5440)
Решение задачи: «Exception class EAccessViolation with message 'Access Violation'»
textual
Листинг программы
A = malloc(n*n*sizeof(float));
Объяснение кода листинга программы
A- это переменная, которая хранит указатель на выделенную память. ЗначениеA- это адрес выделенной памяти.n- это переменная, которая содержит размер массива. Значениеn- это размер массива в элементах.sizeof(float)- это выражение, которое вычисляет размер одного элемента массива в байтах. В данном случае, размер одного элемента массива составляет 4 байта.malloc(n*n*sizeof(float))- это функция, которая выделяет память для массива. Функция принимает размер массива в элементах и выделяет память для массива размером n*n элементов типа float.A- это переменная, которая хранит указатель на выделенную память. ЗначениеA- это адрес выделенной памяти.