Как для l oop назначение работает с переменной инициализатора в C? - PullRequest
0 голосов
/ 09 марта 2020

Итак, из того, что я знаю в C, все, на что ссылаются, должно где-то храниться в памяти. Переменные, хранящиеся в куче, могут превысить свое время жизни после вызова функции. Но вот тривиальный пример целого числа, определенного в a для l oop, на значения которого в некоторой точке ссылается массив вне его.

Если бы мы распечатали массив, мы получили бы 0,1,2 ... 7. Где хранятся эти отдельные целые числа? Если бы каждый индекс массива ссылался на одно и то же «int i», то все они были бы одинаковыми. Но если бы каждый int был отдельной ячейкой памяти, это означало бы, что все целые числа в какой-то момент сохраняются в памяти?

int main(){
    int arr[8];
    for (int i = 0; i<8; i++){
        arr[i] = i;
    }
    return 0;
}

1 Ответ

3 голосов
/ 09 марта 2020

Значения сохраняются в массиве arr.

В строке int arr[8] вы говорите: «Зарезервируйте достаточно памяти для хранения восьми целых чисел». Затем, когда вы вводите l oop, вы назначаете значение из счетчика l oop i в каждое из этих мест. После этой операции присваивания значение значения i не имеет значения, поскольку значение уже находится в массиве arr. В опубликованном примере ничто не имеет доступа к значению i вне области действия l oop.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...