Программа на языке C для сложения матриц по диагонали с помощью указателей

Вот программа на языке C, которая складывает две матрицы по диагонали с помощью указателей:

#include <stdio.h>
void addDiagonal(int *matrix1, int *matrix2, int size) {
    int i, j;
    int *result = (int *)malloc(size * sizeof(int));
    for (i = 0; i < size; i++) {
        *(result + i) = *(matrix1 + i) + *(matrix2 + i);
    }
    printf("Resultant diagonal matrix:\n");
    for (i = 0; i < size; i++) {
        for (j = 0; j < size; j++) {
            if (i == j) {
                printf("%d ", *(result + i));
            } else {
                printf("0 ");
            }
        }
        printf("\n");
    }
    free(result);
}
int main() {
    int matrix1[3][3] = {{1, 2, 3}, {4, 5, 6}, {7, 8, 9}};
    int matrix2[3][3] = {{9, 8, 7}, {6, 5, 4}, {3, 2, 1}};
    int size = sizeof(matrix1) / sizeof(matrix1[0]);
    int *ptr1 = &matrix1[0][0];
    int *ptr2 = &matrix2[0][0];
    addDiagonal(ptr1, ptr2, size);
    return 0;
}

В этой программе мы определяем функцию addDiagonal, которая принимает два указателя матрицы (matrix1и matrix2) и размер матрицы. Он динамически выделяет память для результирующей диагональной матрицы (result) с помощью malloc. Затем он вычисляет сумму соответствующих элементов в matrix1и matrix2и сохраняет результат в result. Наконец, он печатает результирующую диагональную матрицу.

В функции mainмы объявляем две матрицы 3×3 (matrix1и matrix2). Мы вычисляем размер матрицы, разделив общий размер матрицы на размер строки. Затем мы получаем указатели на первые элементы matrix1и matrix2, используя оператор адреса (&). Эти указатели передаются в функцию addDiagonal.