Разработка, производство и продажа радиоэлектронной аппаратуры
|
Карта сайта
|
Пишите нам
|
В избранное
Требуется программист в Зеленограде
- обработка данных с датчиков; ColdFire; 40 тыс.
e-mail:
jobsmp@pochta.ru
Телесистемы
|
Электроника
|
Конференция «Микроконтроллеры и их применение»
Подскажите, плз, если ф-я возвращает указатель, это имеется ввиду что? (+)
Отправлено
Метценгерштейн
(213.33.244.142)
05 мая 2010, г. 18:23
*int ddf (int a) {
int b,c;
c = a+b;
return &c;
}
void main (void){
cout << ddf ();
}
примерно так? т.е. моя ф-я ddf возвращает адрес переменной что- ли?
Составить ответ
|
Вернуться на конференцию
Ответы
понятно, спасибо
-
Метценгерштейн
(05.05.2010, 19:17:31
213.33.244.142
,
пустое
)
Переменная ваша на стеке лежит, и по выходу из функции она уже не существует, и по указателю находится неизвестно что.
-
alostap
(05.05.2010, 18:43:41
77.66.213.156
,
пустое
)
такие вещи размещаются в Rxx
-
MegaJohn
(05.05.2010, 18:47:19
81.222.85.88
,
пустое
)
А чего это Rxx?
-
alostap
(05.05.2010, 18:58:15
77.66.213.156
,
пустое
)
регистры R0...R32, часть из них юзается для передачи парамтеров между функциями, часть для временных перемсенных
-
MegaJohn
(05.05.2010, 19:08:9
81.222.85.88
,
пустое
)
Женя, а если речь не про МК? а про Си под Visual Studio, например? Я к тому, что без привязки к железу.
-
Метценгерштейн
(05.05.2010, 19:19:10
213.33.244.142
,
пустое
)
Visual Studio имеет свои прибамбасы(+)
-
Homer
(05.05.2010, 22:20:12
77.87.33.185
, 276 байт)
тады это оффтоп за несоотвествие конфы =)
-
MegaJohn
(05.05.2010, 19:40:18
81.222.85.88
,
пустое
)
а , блин, регистры, мне почему-то подумалось что это какая-то специфическая деталь микроконтроллера :)
-
alostap
(05.05.2010, 19:16:19
77.66.213.156
,
пустое
)
адреса у Rxx нет, поэтому значение переменной "ляжет" в стек
-
ы
(05.05.2010, 18:50:55
213.79.108.215
,
пустое
)
да, возвращает адрес переменной = адрес памяти (в стеке) где "сидела" это переменная во время выполнения функции ddf
-
ы
(05.05.2010, 18:42:57
213.79.108.215
,
пустое
)
скорее всего это фукнция возвратит текущий указатель стека, а эти сумма так, для компилятора
-
ы
(05.05.2010, 18:46:42
213.79.108.215
,
пустое
)
Если переменная описана как "static" или "volatile"
-
misyachniy
(05.05.2010, 18:32:30
212.40.39.2
,
пустое
)
Volatile тоже умрет при выходе. Короче, возвращать адрес локальной переменной нелзя.
-
VasilyS
(06.05.2010, 00:28:21
80.92.96.25
,
пустое
)
а немного подробней можно? на моем примере кода?
-
Метценгерштейн
(05.05.2010, 18:33:23
213.33.244.142
,
пустое
)
static int c; Вы делит место для переменной в оперативной памяти. Сссылку на переменную и вернет функция.
-
misyachniy
(05.05.2010, 18:43:16
212.40.39.2
,
пустое
)
а volatile?
-
ы
(05.05.2010, 18:44:5
213.79.108.215
,
пустое
)
т.е. правильно так: (+)
-
Метценгерштейн
(05.05.2010, 18:52:31
213.33.244.142
, 355 байт)
правильно, только каков конечный результат нужен? или это просто пример для изучения "функция возвращает указатель"?
-
ы
(05.05.2010, 18:54:6
213.79.108.215
,
пустое
)
да, хотел понять, что такое ф-я возвращает указатель. т.е. ещё раз- возвращает адрес переменной static ?
-
Метценгерштейн
(05.05.2010, 18:57:24
213.33.244.142
,
пустое
)
не обязательно адрес переменной static
-
alostap
(05.05.2010, 19:05:31
77.66.213.156
, 135 байт)
да, возвращает. а static тут лишнее
-
ы
(05.05.2010, 18:58:34
213.79.108.215
,
пустое
)
переменная static не сидит на стеке.
-
ы
(05.05.2010, 19:06:50
213.79.108.215
,
пустое
)
хорошо, по другому, ф-я возвращает адрес переменной, которая была объявлена как static, чтобы не быть выкинутой из стека при возвращении. так?
-
Метценгерштейн
(05.05.2010, 19:02:20
213.33.244.142
,
пустое
)
xорошо, по другому, ф-я возвращает адрес переменной, которая была объявлена как static = ДА. чтобы не быть выкинутой из стека при возвращении. так? = НЕТ - переменная static не сидит на стеке.
-
ы
(05.05.2010, 19:08:3
213.79.108.215
,
пустое
)
все, понял. спасибо
-
Метценгерштейн
(05.05.2010, 19:20:22
213.33.244.142
,
пустое
)
Отправка ответа
Имя*:
Пароль:
E-mail:
Тема*:
Сообщение:
Ссылка на URL:
URL изображения:
если вы незарегистрированный на форуме пользователь, то
для успешного добавления сообщения заполните поле, как указано ниже:
сложите три и три:
Перейти к списку ответов
|
Конференция
|
Раздел "Электроника"
|
Главная страница
|
Карта сайта
Web
telesys.ru