Разработка, производство и продажа радиоэлектронной аппаратуры
|
Требуется программист в Зеленограде - обработка данных с датчиков; ColdFire; 40 тыс.
e-mail: jobsmp@pochta.ru
|
[pte]
char* fun( char* x, char* y, char n) {
if( x[n] >= y[n] )
return x; // может, компиляитор потребует явно: return ((char*)x);
else
return y; // может, компиляитор потребует явно: return ((char*)y);
}
void main(void){
char mas1[256] = {2,3,5,6,7,8}; // ну и так далее.
char mas2[256] = {33,44,55,66,77}; // ну и так далее.
// Хачу получить указатель на один из двух массивов, именно на тот
// у которого третий элемент больше.
char * maxprt = fun( mas1, mas2, 3);
..................
}
Нельзя возвращать указатель на массив, созданный в самой функции, т.к. после возвращения он перестаёт быть.
}
Составить ответ | Вернуться на конференцию
Ответы
- можно, если перед массивом написать static, или сделать его глобальным. - доктор (01.05.2010, 15:11:36 95.27.165.56, 88 байт)
- Ага. Глобальный массив, созданный внутри функции. Как ты это себе представляешь? А при чем тут статик? Я ж песал в первом посте: "нельзя локальный" - VasilyS (01.05.2010, 15:22:5 80.92.96.25, пустое)
- было сказано, static внутри функции или глобальный - доктор (01.05.2010, 15:24:18 95.27.165.56, 116 байт)
- А при работе с глобальными массивами на хера возвращать его адрес? :-) - VasilyS (01.05.2010, 15:23:37 80.92.96.25, пустое)
- например - доктор (01.05.2010, 15:27:33 95.27.165.56, 371 байт)
- Это глобальная переменная с ограниченной scope, у нее ЕСТЬ адрес. :-) У локальной - нет. - VasilyS (01.05.2010, 15:30:27 80.92.96.25, пустое)
- Какэто нет?! Есть. Только после выхода из функции эта область памяти считается свободной и может выделиться кому-то ещё. Указатель указывает на поле, а там уже другие хозяйничают. (тогда получается, что static таки объявит "глобальную переменную" ) - maik-vs (01.05.2010, 15:58:2 94.233.226.32, пустое)
- Уже ответил Доку. Нет адреса для вызывающих функций. После выхода из функции, область ее лок. переменных утилизуется недетерминированно (+ прерывания). - VasilyS (01.05.2010, 16:01:50 80.92.96.25, пустое)
- Так это называется "область видимости", scope. И фокус со static прокатит. Но не будет реентерабельности. - maik-vs (01.05.2010, 16:05:9 94.233.226.32, пустое)
- Ну мыло мочало, начинай сначало ;-) Читай же с начала, Док с этого начал. А я про локальные, "невщзвращвбельные" гутарил.. - VasilyS (01.05.2010, 16:08:47 80.92.96.25, пустое)
- Да я всё читал и понял. Только нельзя так говорить "нет адреса". - maik-vs (01.05.2010, 16:17:57 94.233.226.32, 160 байт)
- Ну, батенька можно и так говорить. Локальные переменные могут и на регистрах быть, а регистры (вот в Хмега тоже) не имеют явной адресации. А вообще компилятор предупредить должен. - VasilyS (01.05.2010, 16:22:16 80.92.96.25, пустое, ссылка)
- вот и я об том же, адрес есть, вопрос в том, на что он указывает. - доктор (01.05.2010, 16:21:32 95.27.165.56, пустое)
- в микроконтроллерах со статической памятью ничего не утилизируется обычно - доктор (01.05.2010, 16:04:30 95.27.165.56, 88 байт)
- Тэги, тэги :-( - VasilyS (01.05.2010, 14:54:3 80.92.96.25, 685 байт)