Вопросы с тегом «c»

C - это язык программирования общего назначения, используемый для системного программирования (ОС и встраиваемых), библиотек, игр и кроссплатформенности. Этот тег следует использовать с общими вопросами, касающимися языка C, как это определено в стандарте ISO 9899 (последняя версия 9899: 2018, если не указано иное, а также для запросов, специфичных для версии, с c89, c99, c11 и т. Д.). C отличается от C ++ и не должен сочетаться с тэгом C ++ без разумной причины.

9
Почему выпадение из конца непустой функции без возврата значения не приводит к ошибке компилятора?
С тех пор, как я понял много лет назад, что это не приводит к ошибке по умолчанию (по крайней мере, в GCC), я всегда задавался вопросом, почему? Я понимаю, что вы можете использовать флаги компилятора для выдачи предупреждения, но не должно ли это быть ошибкой? Почему имеет смысл, чтобы не …
158 c++  c  gcc  g++ 

8
Что такое библиотека времени выполнения C?
Что такое библиотека времени выполнения C и для чего она используется? Я искал, гуглял как дьявол, но не мог найти ничего лучше, чем Microsoft: «Библиотека времени выполнения Microsoft предоставляет подпрограммы для программирования для операционной системы Microsoft Windows. Эти подпрограммы автоматизируют многие распространенные задачи программирования, которые не предоставляются языки C и …
158 c  runtime 

7
Чар подписан или не подписан по умолчанию?
В книге «Полная справка о С» упоминается, что char по умолчанию она не подписана. Но я пытаюсь проверить это с помощью GCC, а также Visual Studio. Это принимает как подписано по умолчанию. Который правильный?
158 c  types  char  signed 

9
Как использовать API сокетов C в C ++ в z / OS
У меня возникают вопросы , получить С Sockets API для работы должным образом C++на z/OS. Хотя я включаю sys/socket.h, я все еще получаю ошибки времени компиляции, говорящие мне, что AF_INETэто не определено . Я упускаю что-то очевидное или это связано с тем, что z/OSмои проблемы намного усложняют мои проблемы? Обновление …
158 c++  c  sockets  mainframe  zos 

24
Полезные флаги GCC для C
Помимо настройки -Wallи настройки -std=XXX, какие еще действительно полезные, но менее известные флаги компилятора существуют для использования в C? Меня особенно интересуют любые дополнительные предупреждения и / или превращение предупреждений в ошибки в некоторых случаях, чтобы абсолютно минимизировать случайные несоответствия типов.
157 c  gcc  compiler-flags 

22
Объектная ориентация в C
Каким будет набор изящных препроцессорных хаков (совместимых с ANSI C89 / ISO C90), которые обеспечивают некую некрасивую (но пригодную для использования) объектную ориентацию в C? Я знаком с несколькими различными объектно-ориентированными языками, поэтому, пожалуйста, не отвечайте с ответами типа «Изучите C ++!». Я прочитал « Объектно-ориентированное программирование с ANSI C …
157 c  oop  object 

11
memcpy () против memmove ()
Я пытаюсь понять разницу между memcpy()и memmove(), и я прочитал текст, memcpy()который не заботится о перекрывающихся источника и назначения, а memmove()делает. Однако когда я выполняю эти две функции на перекрывающихся блоках памяти, они оба дают одинаковый результат. Например, возьмите следующий пример MSDN на memmove()странице справки: Есть ли лучший пример, чтобы …
157 c  memcpy  memmove 

10
Есть ли недостатки в передаче структур по значению в C, а не в передаче указателя?
Есть ли недостатки в передаче структур по значению в C, а не в передаче указателя? Если структура велика, очевидно, что существует аспект производительного копирования большого количества данных, но для структуры меньшего размера она должна быть в основном такой же, как и передача нескольких значений в функцию. Это может быть даже …

9
Зачем использовать bzero над memset?
В классе системного программирования, который я взял в предыдущем семестре, мы должны были реализовать базовый клиент / сервер на C. При инициализации sock_addr_inбуферов struct, like или char (которые мы использовали для отправки данных между клиентом и сервером и обратно), профессор поручил нам только использовать, bzeroа не memsetинициализировать их. Он никогда …

23
Установка переменной в NULL после освобождения
В моей компании есть правило кодирования, которое гласит, что после освобождения памяти сбросьте переменную в NULL. Например ... void some_func () { int *nPtr; nPtr = malloc (100); free (nPtr); nPtr = NULL; return; } Я чувствую, что в случаях, подобных приведенному выше коду, установка значения NULLне имеет никакого значения. …

6
Как понять локальное хеширование?
Я заметил, что LSH, кажется, хороший способ найти похожие элементы с большими свойствами. После прочтения статьи http://www.slaney.org/malcolm/yahoo/Slaney2008-LSHTutorial.pdf я все еще не понимаю эти формулы. Кто-нибудь знает блог или статью, которая объясняет, что легкий путь?

9
Где в памяти мои переменные хранятся в C?
Учитывая, что память разделена на четыре сегмента: данные, куча, стек и код, где находятся глобальные переменные, статические переменные, постоянные типы данных, локальные переменные (определенные и объявленные в функциях), переменные (в основной функции), указатели и динамически выделенное пространство (используя malloc и calloc) хранится в памяти? Я думаю, что они будут распределены …

5
Несовместимое неявное объявление встроенной функции 'malloc'
Я получаю эту ошибку: предупреждение: несовместимое неявное объявление встроенной функции 'malloc' Я пытаюсь сделать это: fileinfo_list* tempList = malloc(sizeof(fileinfo_list)); Просто для справки используемая структура: typedef struct { fileinfo** filedata; size_t nFiles; size_t size; size_t fileblock; } fileinfo_list; Я не вижу ничего плохого в том, что я сделал. Я просто создаю …
155 c  struct  malloc 

21
Сплит строка с разделителями в C
Как мне написать функцию для разделения и вернуть массив для строки с разделителями на языке программирования C? char* str = "JAN,FEB,MAR,APR,MAY,JUN,JUL,AUG,SEP,OCT,NOV,DEC"; str_split(str,',');
155 c  string  split 

7
'float' против 'двойной' точности
Код float x = 3.141592653589793238; double z = 3.141592653589793238; printf("x=%f\n", x); printf("z=%f\n", z); printf("x=%20.18f\n", x); printf("z=%20.18f\n", z); даст вам выход x=3.141593 z=3.141593 x=3.141592741012573242 z=3.141592653589793116 где на третьей строке выводится 741012573242мусор, а на четвертой строке 116мусор. У двойников всегда есть 16 значащих цифр, а у чисел с плавающей запятой всегда 7 …
155 c  floating-point 

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.