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

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

6
Как многомерные массивы отформатированы в памяти?
В Си я знаю, что могу динамически распределить двумерный массив в куче, используя следующий код: int** someNumbers = malloc(arrayRows*sizeof(int*)); for (i = 0; i < arrayRows; i++) { someNumbers[i] = malloc(arrayColumns*sizeof(int)); } Ясно, что на самом деле это создает одномерный массив указателей на кучу отдельных одномерных массивов целых чисел, и …

3
Почему GCC генерирует такую ​​радикально отличную сборку для почти одного и того же C-кода?
При написании оптимизированной ftolфункции я обнаружил очень странное поведение в GCC 4.6.1. Позвольте мне сначала показать вам код (для ясности я отметил различия): fast_trunc_one, C: int fast_trunc_one(int i) { int mantissa, exponent, sign, r; mantissa = (i & 0x07fffff) | 0x800000; exponent = 150 - ((i >> 23) & 0xff); …

8
Перегрузка макроса по количеству аргументов
У меня есть два макроса FOO2и FOO3: #define FOO2(x,y) ... #define FOO3(x,y,z) ... Я хочу определить новый макрос FOOследующим образом: #define FOO(x,y) FOO2(x,y) #define FOO(x,y,z) FOO3(x,y,z) Но это не работает, потому что макросы не перегружают количество аргументов. Без изменения FOO2и FOO3, есть какой - то способ определить макрос FOO( с …
184 c  macros  c-preprocessor 

16
C читать файл построчно
Я написал эту функцию для чтения строки из файла: const char *readLine(FILE *file) { if (file == NULL) { printf("Error: file pointer is null."); exit(1); } int maximumLineLength = 128; char *lineBuffer = (char *)malloc(sizeof(char) * maximumLineLength); if (lineBuffer == NULL) { printf("Error allocating memory for line buffer."); exit(1); } …
184 c  file-io  line  std 


22
Является ли встроенный язык ассемблера медленнее, чем собственный код C ++?
Я попытался сравнить производительность встроенного языка ассемблера и кода C ++, поэтому я написал функцию, которая добавляет два массива размером 2000 для 100000 раз. Вот код: #define TIMES 100000 void calcuC(int *x,int *y,int length) { for(int i = 0; i < TIMES; i++) { for(int j = 0; j < …
183 c++  c  performance  assembly 

8
Что делает системный вызов brk ()?
Согласно руководству для программистов Linux: brk () и sbrk () изменяют место остановки программы, которое определяет конец сегмента данных процесса. Что означает сегмент данных здесь? Это просто сегмент данных или данные, BSS и куча вместе взятые? Согласно вики: Иногда данные, BSS и области кучи вместе называются «сегментом данных». Я не …
183 c  linux  unix  memory-management  brk 

8
Как правильно сравнить строки?
Я пытаюсь получить программу, позволяющую пользователю вводить слово или символ, сохранять его, а затем распечатывать, пока пользователь не введет его снова, выйдя из программы. Мой код выглядит так: #include <stdio.h> int main() { char input[40]; char check[40]; int i=0; printf("Hello!\nPlease enter a word or character:\n"); gets(input); printf("I will now repeat …
183 c  string  strcmp 

2
Реалистичное использование ключевого слова C99 «Restrict»?
Я просматривал некоторую документацию и вопросы / ответы и видел упомянутое. Я прочитал краткое описание, в котором говорится, что программист обещает, что указатель не будет использоваться для указания другого места. Может ли кто-нибудь предложить некоторые реалистичные случаи, когда на самом деле стоит использовать это?
183 c  gcc  c99  restrict-qualifier 

4
Как мне использовать valgrind для поиска утечек памяти?
Как использовать valgrind для обнаружения утечек памяти в программе? Пожалуйста, кто-нибудь, помогите мне и опишите шаги для проведения процедуры? Я использую Ubuntu 10.04 и у меня есть программа a.c, пожалуйста, помогите мне.
183 c  valgrind 

10
Почему функции условных переменных pthreads требуют мьютекса?
Я читаю на pthread.h; функции, связанные с условной переменной (например pthread_cond_wait(3)), требуют мьютекса в качестве аргумента. Зачем? Насколько я могу судить, я буду создавать мьютекс просто использовать в качестве этого аргумента? Что должен делать этот мьютекс?

6
Как мне определить и использовать ENUM в Objective-C?
Я объявил enum в своем файле реализации, как показано ниже, и объявил переменную этого типа в моем интерфейсе как PlayerState thePlayerState; и использовал переменную в моих методах. Но я получаю ошибки, утверждающие, что это не объявлено. Как правильно объявить и использовать переменную типа PlayerState в моих методах ?: В файле …
180 iphone  objective-c  c 

16
Где хранятся статические переменные в C и C ++?
В каком сегменте (.BSS, .DATA и т. Д.) Исполняемого файла хранятся статические переменные, чтобы избежать конфликта имен? Например: foo.c: bar.c: static int foo = 1; static int foo = 10; void fooTest() { void barTest() { static int bar = 2; static int bar = 20; foo++; foo++; bar++; bar++; …

5
Почему функция scanf () нуждается в «% lf» для двойников, когда printf () в порядке с «% f»?
Почему это , что scanf()нуждается lв « %lf» при чтении double, когда printf()можно использовать « %f» независимо от того, является ли ее аргумент doubleили float? Пример кода: double d; scanf("%lf", &d); printf("%f", d);

30
Как стандартным способом обрезать начальные / конечные пробелы?
Существует ли чистый, желательно стандартный метод обрезания начальных и конечных пробелов из строки в C? Я бы катился сам, но я бы подумал, что это общая проблема с таким же общим решением.
178 c  string  whitespace  trim 

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