Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Kuzia domovenok
1948 / 1801 / 138
Регистрация: 25.03.2012
Сообщений: 6,242
Записей в блоге: 1
#1

Локальные переменные в функции и её аргумент - C++

25.09.2012, 09:29. Просмотров 375. Ответов 1
Метки нет (Все метки)

Привет!
Пишу функцию перевода десятичного числа в текст (не обсуждайте зачем и правильно ли я делаю)
Суть такова, начало функции:
C++
1
2
3
4
5
6
7
8
9
void printFixedPoint(char* buffer, float data, int sign){
    float fval, dfval;<<вход: data=55.0
    int ival;
    dfval=10.0;  //        <<data=55.0
    while (fval>=1.0)
    {
        ival=9;
        fval=9*dfval;//<<fval=90.0 и при этом ВНИМАНИЕ!!! 
               //изменилась data=90.0
Почему аргумент функции внезапно принял значение локальной переменной? Порча стека???
MSVS2008

Добавлено через 2 минуты
опасения подтвердились. Адрес fval равен адресу data

Добавлено через 1 минуту
Но почему???? Это ж разные переменные? Одна - аргумент функции, другая локальная в функции?

Добавлено через 5 минут
у меня включён был Release. Поменял на Debug - адреса переменных стали разными.
В чём причина? Хитрый оптимизатор MSVS решил доказать, что он умнее меня и мне нужны не две, а одна переменная?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
25.09.2012, 09:29
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Локальные переменные в функции и её аргумент (C++):

Локальные, глобальные переменные и функции - C++
Есть массив типа char. char b; Он заполнен нулями и единицами. b находится в main. Нужно вывести на консоль b в ф-ции main, но уже в...

Локальные переменные - C++
#include &lt;iostream.h&gt; #include &lt;conio.h&gt; // по объявлению библиотек сразу видно компилятор старый такчто ветераны с++ помогите ...

С++ ООП локальные переменные - C++
Есть розмерность для матрицы n i m, если я ввожу их в функции create, то уже функция print их не видит.я понимаю что они локальные, как же...

Неинициализированные локальные переменные - C++
Меня интересует как обходить данные ошибки. В чем соль ошибок? Проблема даже не в том что они есть, а то что компилятор останавливается и...

Локальные переменные-классы - C++
есть такой код #include &lt;iostream&gt; using namespace std; class My_vector{ friend ostream &amp;operator&lt;&lt;(ostream &amp;,const My_vector...

Неиспользуемые локальные переменные - C++
Добрый день. Напомните, пожалуйста, вот что. Имеем, например: void MyClass::myFunc() { SomeClass *cls = new SomeClass(); ...

1
ValeryS
Модератор
6707 / 5116 / 482
Регистрация: 14.02.2011
Сообщений: 17,186
25.09.2012, 09:45 #2
Цитата Сообщение от Kuzia domovenok Посмотреть сообщение
Почему аргумент функции внезапно принял значение локальной переменной? Порча стека???
MSVS2008
Добавлено через 2 минуты
опасения подтвердились. Адрес fval равен адресу data
А ты что используешь где то data ??? нет.
вот компилятор и решил поставить на её место fval чтобы размер стека не раздувать
оптимизация, однако
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
25.09.2012, 09:45
Привет! Вот еще темы с ответами:

Asm локальные переменные, объявленные в c++ - C++
//------------------------------------------------------------------------------------------------- TLongInteger TLongInteger:: ...

Variadic templates локальные переменные - C++
Еще один вопрос по Variadic templates. Решаю следующую задачу: Необходимо сохранить в памяти функцию с набором параметров для...

Неинициализированные локальные переменные warning C4700 - C++
// Laboratornaa.cpp: определяет точку входа для консольного приложения. // #include&quot;stdafx.h&quot; #include&lt;iostream&gt; ...

как в Code::Blocks просмотреть локальные переменные? - C++
знаю, что можно, а как - не знаю :( Добавлено через 15 часов 11 минут up...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru