10 вопросов по С. part1 - C (СИ)

Узнай цену своей работы

Формулировка задачи:

1) в такой конфигурации: while (getchar () != -1) ; При комбинации: char + EOF, eof игнорируется. Почему? Зависит от сис-мы? Слышал, что еоф виндой воспринимается только в том случае, если за ним следует \n. Пример показывает обратное. Странно, ведь это стандартная ф-ия.... 2) Решил посмотреть, какое значение возвращает ф-ия, без написанного ретерна. а) float func () {} main () { printf ("%d", func ()); } Выдает 0. Допустим. б) меняем модификатор: float func () {} main () { printf ("%f", func ()); } Выдает набор символов (?!). Т.е. я интерпретировал как число, получились чары. Это как? Что возвращается, если нет ретерна? Предположим, ничего, мы читаем мусор и транслируем в флоат. Но откуда символы? Если можно, поподробнее. 3) Объяснить последовательность выполнения: printf ("%d %d %d", ++y, y++, y); *Ну и в целом, может кто кинуть статейку, где четко расписан порядок и итог выполнения подобных выражений. Чтобы всегда знать, что будет в подобном выражении любой сложности (в стандарте только некоторые примеры behaivor....) 4) int *x = 0; //(== NULL) раз компил распознал нуль как адрес, почему же тогда int *x = 1221; теперь число уже инт? Правило для нуля было введено для краткости или для чего? 5) есть ли операция доступа (считывания данных) из любого байта переменной? 6) Текущее положение курсора (мигающая верт черта). Как putc, getchar и т.п. взаимодействуют с ним? можно статью. 7) Пользователь вводит текст в консоли. Если он выходит за предел блока (100символов) calloc () заказывает еще один блок. Операция повторяется до тех пор, пока все символы не будут размещены в памяти (конечный eof). Как связать блоки без использования доп. массива указателей? 8) При объявлении указателя (/ их массива) компилятор не гарантирует, что доступ по этим адресам разрешен? 9) почему при осуществлении доступа по неверному указателю sigsegv срабатывает не всегда (иногда удается получить доступ)? Отчего это зависит? 10) long double - увеличение размера (отн double) идетна мантиссу или экспоненту или зависит от сис-мы?

Решение задачи: «10 вопросов по С. part1»

textual
Листинг программы
more_numbers = (int*) realloc (numbers, count * sizeof(int));
 
     if (more_numbers!=NULL) {
       numbers=more_numbers;
       numbers[count-1]=input;
     }

Объяснение кода листинга программы

  1. В начале кода объявлена переменная numbers типа int* (указатель на целочисленный массив) и инициализирована значением NULL.
  2. Затем, с использованием функции realloc, происходит выделение памяти под массив целых чисел. Первый аргумент - это указатель на массив, второй аргумент - это количество элементов, которые необходимо выделить.
  3. Если операция выделения памяти прошла успешно (то есть, в случае, если realloc не вернул значение NULL), то выделенный блок памяти присваивается переменной numbers.
  4. Последний элемент массива (с индексом count-1) инициализируется значением, полученным от пользователя с помощью функции input.
  5. Если операция выделения памяти не удалась (то есть, если realloc вернул значение NULL), то переменная numbers остается со значением NULL.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

5   голосов , оценка 3.6 из 5
Похожие ответы