Я немного озадачен поведением программы на C другого программиста, с которым я сейчас работаю.Что я не могу понять, так это:
1) переменная определяется таким образом
typedef float (array3d_i)[3];
array3d_i d_i[NMAX];
2) как только некоторые значения назначены для всех d_i, вызывается функция, котораякак это:
void calc(elem3d_i d_element);
, который вызывается из main используя:
calc(d_i[i]);
в цикле.
Когда d_i инициализируются в main, каждый элемент получаетадрес в памяти, я думаю, в стеке или где-то еще.Когда мы вызываем функцию «calc», я ожидаю, что внутри функции будет создана копия переменной по другому адресу.Но я отладил программу и вижу, что внутри функции «calc» переменная «d_elemt» получает тот же адрес, что и d_i в main.
Это нормально или нет?
Я еще больше сбит с толку, потому что позже происходит вызов другой функции, очень похожая ситуация, за исключением того, что теперь переменные имеют тип float, а также их массив инициализируется, и внутри функции переменным присваивается другой адрес, чем вmain.
Как это может быть?Почему разница?Код или отладчик делают что-то странное?
Спасибо