Почему при использовании указателя на массив в функции printf возникает ошибка?

Как исправить сообщение об ошибке "expression must have pointer-to-object type but it has type 'float'" при передаче массива M в функцию и выводе его элементов?
  • 13 декабря 2023 г. 8:57
Ответы на вопрос 2
Ошибка "expression must have pointer-to-object type but it has type 'float'" возникает при передаче массива как аргумента функции `printf`. Это происходит потому, что `printf` ожидает, что аргументы будут иметь типы, соответствующие спецификаторам формата, переданным в первом параметре.

Для исправления этой ошибки можно использовать цикл для перебора элементов массива и поочередной передачи их в `printf`. Например:

```c
#include <stdio.h>

void printArray(float *arr, int size) {
    for (int i = 0; i < size; i++) {
        printf("%f ", arr[i]);
    }
    printf("\n");
}

int main() {
    float M[] = { 1.0, 2.0, 3.0, 4.0, 5.0 };

    printArray(M, sizeof(M) / sizeof(float));
    
    return 0;
}
```

В этом примере мы создали функцию `printArray`, которая принимает указатель на массив `arr` и его размер `size`. Затем мы используем цикл для перебора элементов массива и поочередной передачи их в `printf` с помощью `%f` для вывода чисел с плавающей запятой.
M - указатель на float. 
M[i] - float
M[i][j] - ???
Похожие вопросы