Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 25.11.2012, 17:19   #1
Sv.
Пользователь
 
Регистрация: 01.11.2012
Сообщений: 48
Вопрос проверьте правильно ли

1. Какие из выражений записаны неверно? #define MAX 100
int arr[10], K; K = MAX + 1; arr[0] = arr[*arr] ; arr++ ;

K = MAX + 1; arr[0] = arr[*arr];
arr++ (здесь нужен указатель?)

2. Запишите прототип Фун с двумя аргументами: массив типа int и его
размер. Функция возвращает указатель на минимальный элемент:

int *min(int *arr, int n);


3. Где хранятся локальные переменные Фун ?

В стеке

4. Запишите вызов Фун void fun(int *m) с аргументом int А[100]

fun(A);

5. C какими фактич-ми параметрами нельзя вызвать Фун int fun(int K) ?
‘d’ 25 12.34 { int *ch, s[10]; ch[0] s[3] }

‘d’ ,
{ int *ch, s[10]; ch[0] s[3] } - не могу понять, что это вообще значит

6. Что заносится в стек при вызове Фун: void fun (char s, int n ) ?

n и s

7. Где в П можно объявить локальную переменную?

Внутри функции

8. Определите результат функции: int fun(float *x, int n)
{ float z;
int k = 0;
for(int i = n - 2; i > -1; i - -)
if( *x++ < 0) return i;
return n;
}
если массив х = {-1, 2, -3, 4, -5, 6, -7, 8 }, n = 8.

не могу понять зачем здесь нужны k и z
Sv. вне форума Ответить с цитированием
Старый 26.11.2012, 14:00   #2
Abstraction
Старожил
 
Аватар для Abstraction
 
Регистрация: 25.10.2011
Сообщений: 3,178
По умолчанию

Цитата:
#define MAX 100
int arr[10], K; K = MAX + 1; arr[0] = arr[*arr] ; arr++ ;
Формально верно записано всё кроме последнего (потому что arr не может быть изменена). По смыслу же, гм...
Цитата:
3. Где хранятся локальные переменные Фун ?

В стеке
Для локальных нестатических переменных, значения которых требуется сохранять на протяжении работы функции (т.е. не получается удерживать на регистрах), выделяется место в т.н. "записи активации" функции, которая для современных распространённых архитектур создаётся в стеке, но, вообще говоря, это не обязательно.
Цитата:
4. Запишите вызов Фун void fun(int *m) с аргументом int А[100]

fun(A);
Напишите, скомпилируйте и посмотрите на формулировку ошибки.
Цитата:
5. C какими фактич-ми параметрами нельзя вызвать Фун int fun(int K) ?
‘d’ 25 12.34 { int *ch, s[10]; ch[0] s[3] }

‘d’
fun('d') - легитимный вызов. 'd' - символьный литерал, константа типа char со значением, равным коду символа 'd' в используемой кодировке.
Цитата:
6. Что заносится в стек при вызове Фун: void fun (char s, int n ) ?

n и s
1) Зависит от соглашения о вызове и целевой архитектуры (см. вопрос 3); также возможно встраивание (inlining) функции компилятором, при котором стек используется только для хранения нестатических локальных переменных fun. При использовании стека, в стек всегда заносится адрес возврата; также в нём может выделяться место под возвращаемые значения, под локальные переменные, под аргументы функции. Также следует учесть, что при передаче аргументов, размер которых меньше машинного слова, реально выделенное под них место может быть больше их истинного размера.
Цитата:
7. Где в П можно объявить локальную переменную?

Внутри функции
Ху из П? Под локальной обычно понимают переменную, объявленную внутри некоторого блока кода. Соответственно, её можно объявить внутри любого блока кода, если это позволяет стандарт (обратите внимание, что, к примеру, в теле цикла for локальную переменную можно объявить в C++, но не в C).
Цитата:
не могу понять зачем здесь нужны k и z
Чтобы запутать.
Abstraction вне форума Ответить с цитированием
Старый 26.11.2012, 20:20   #3
kineziz
Форумчанин
 
Регистрация: 22.12.2011
Сообщений: 378
По умолчанию

Вот эта запись
Код:
arr[0] = arr[*arr];
это тоже самое что и
Код:
arr[0] = arr[0];
?
Большинство хороших программистов делают свою работу не потому, что ожидают оплаты или признания, а потому что получают удовольствие от программирования.
kineziz вне форума Ответить с цитированием
Старый 26.11.2012, 20:42   #4
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,709
По умолчанию

если arr[0] = 0, то да
p51x вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Сделал задачу, проверьте правильно ли metisse Общие вопросы C/C++ 6 15.10.2012 10:56
Проверьте, правильно ли я записал математическую формулу в паскаль Женька Good Помощь студентам 5 11.02.2012 12:38
Проверьте правильно ли я составил блок-схему PetrWS Microsoft Office Excel 1 27.05.2011 19:26
Правильно ли? Проверьте Wild_klas Помощь студентам 2 21.11.2010 12:03
Проверьте, правильно ли освобождаю память Gtx541 Общие вопросы C/C++ 1 04.06.2010 20:00