C переписывает массив с помощью функции, избегая указателей - PullRequest
0 голосов
/ 24 декабря 2018

Я тщательно искал и не смог найти ответ на свой вопрос.

Я хотел бы, чтобы функция в моем коде переписывала уже существующий массив.Я хотел бы, чтобы это был локальный массив, то есть массив, который определен и инициализирован внутри main.Я хотел бы выполнить без использования указателей.

Я думаю, что это должно быть возможно из-за того факта, что массивы на самом деле указатели (насколько чтение).

это мой код, для чегоего стоимость:

#include<stdio.h>

void minusone_array_rewrite(int food_arr[5][2]);
int main()
{
    int food_arr[5][2] = {0};
    minusone_array_rewrite(food_arr[5][2]);

    for (int i = 0; i < 5; i++)////just printing
    {
        printf("%d", food_arr[i][0]);
        printf("%d", food_arr[i][1]);
    }
    return 0;
}

void minusone_array_rewrite(int food_arr[5][2]) {
    for (int i = 0; i < 5; i++)
    {
        food_arr[i][0] = -1;
        food_arr[i][1] = -1;
    }
}

1 Ответ

0 голосов
/ 24 декабря 2018

Ну, как вы сами сказали, массивы в C сами являются указателями, проблема, которую я вижу, заключается в инициализации вашего массива и передаче его в функцию minusone_array_initializer.

Правильный путь будет:

#include<stdio.h>

void minusone_array_initializer(int food_arr[5][2]);
int main()
{
    int food_arr[5][2];

    minusone_array_initializer(food_arr);

    for (int i = 0; i < 5; i++) {
        printf("%d , %d \n",food_arr[i][0],food_arr[i][1]);
    }
    return 0;
}

void minusone_array_initializer(int food_arr[5][2]) {
    for (int i = 0; i < 5; i++)
    {
        food_arr[i][0] = -1;
        food_arr[i][1] = -1;
    }
 }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...