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

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

13
Как работают malloc () и free ()?
Я хочу знать, как mallocи freeработать. int main() { unsigned char *p = (unsigned char*)malloc(4*sizeof(unsigned char)); memset(p,0,4); strcpy((char*)p,"abcdabcd"); // **deliberately storing 8bytes** cout << p; free(p); // Obvious Crash, but I need how it works and why crash. cout << p; return 0; } Я был бы очень признателен, если …


18
«Зарегистрировать» ключевое слово в C?
Что делает registerключевое слово на языке Си? Я читал, что он используется для оптимизации, но не четко определен ни в одном стандарте. Это все еще актуально и если да, то когда бы вы его использовали?
273 c  memory  keyword 

4
Разница между общими объектами (.so), статическими библиотеками (.a) и DLL (.so)?
Я принимал участие в некоторых дебатах по поводу библиотек в Linux и хотел бы подтвердить некоторые вещи. Насколько я понимаю (пожалуйста, исправьте меня, если я ошибаюсь, и я отредактирую свой пост позже), что есть два способа использования библиотек при создании приложения: Статические библиотеки (файлы .a): во время компоновки копия всей …
273 c++  c  linux  dll  linker 

13
Как определить перечислимый тип (enum) в C?
Я не уверен, каков правильный синтаксис для использования C перечислений. У меня есть следующий код: enum {RANDOM, IMMEDIATE, SEARCH} strategy; strategy = IMMEDIATE; Но это не компилируется со следующей ошибкой: error: conflicting types for ‘strategy’ error: previous declaration of ‘strategy’ was here Что я делаю не так?
272 c  enums 

17
Зачем использовать двойное косвенное обращение? или зачем использовать указатели на указатели?
Когда следует использовать двойную косвенность в C? Кто-нибудь может объяснить на примере? Что я знаю, так это то, что двойное косвенное обращение - это указатель на указатель. Зачем мне нужен указатель на указатель?
272 c  pointers 


23
Как получить каталог, из которого запускается программа?
Существует ли платформо-независимый и файлово-независимый метод для получения полного пути к каталогу, из которого программа работает с использованием C / C ++? Не путать с текущим рабочим каталогом. (Пожалуйста, не предлагайте библиотеки, если они не стандартные, такие как clib или STL.) (Если нет метода, независимого от платформы / файловой системы, …
269 c++  c  working-directory 

30
Как избежать цепочек «если»?
Предполагая, что у меня есть этот псевдокод: bool conditionA = executeStepA(); if (conditionA){ bool conditionB = executeStepB(); if (conditionB){ bool conditionC = executeStepC(); if (conditionC){ ... } } } executeThisFunctionInAnyCase(); Функции executeStepXдолжны быть выполнены тогда и только тогда, когда предыдущий будет успешным. В любом случае, executeThisFunctionInAnyCaseфункция должна быть вызвана в …

8
Что на самом деле делает открытие файла?
На всех языках программирования (которые я использую по крайней мере) вы должны открыть файл, прежде чем сможете читать или писать в него. Но что на самом деле делает эта операция открытия? Страницы руководства по типичным функциям на самом деле не говорят вам ничего, кроме «открытия файла для чтения / записи»: …
266 c  linux 

11
Bool является родным типом C?
Я заметил, что код ядра Linux использует bool, но я подумал, что bool - это тип C ++. Является ли bool стандартным расширением C (например, ISO C90) или расширением GCC?
265 c  gcc  linux-kernel  boolean 

3
Почему оператор стрелки (->) в C существует?
Оператор dot ( .) используется для доступа к члену структуры, а оператор стрелки ( ->) в C используется для доступа к члену структуры, на которую ссылается рассматриваемый указатель. Сам указатель не имеет каких-либо членов, к которым можно получить доступ с помощью оператора точки (на самом деле это всего лишь число, …
264 c  pointers  dereference 

14
Как мне создать массив строк в C?
Я пытаюсь создать массив строк в C. Если я использую этот код: char (*a[2])[14]; a[0]="blah"; a[1]="hmm"; gcc выдает «предупреждение: присваивание из несовместимого типа указателя». Как правильно это сделать? редактировать: мне любопытно, почему это должно выдавать предупреждение компилятора, так как если я это сделаю printf(a[1]);, он правильно печатает «хмм».
263 c  arrays  string 

10
Быстрый потолок целочисленного деления в C / C ++
При заданных целочисленных значениях xи yC, и C ++ оба возвращают как частное q = x/yзначение эквивалента с плавающей запятой. Меня интересует метод возврата потолка. Например, ceil(10/5)=2и ceil(11/5)=3. Очевидный подход включает в себя что-то вроде: q = x / y; if (q * y < x) ++q; Это требует дополнительного …
262 c++  c  algorithm  math 


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