Запитання з тегом «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ключове слово мовою С? Я прочитав, що він використовується для оптимізації, але чітко не визначений у жодному стандарті. Чи вона все ще актуальна і якщо так, то коли б ви її використали?
272 c  memory  keyword 

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

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

17
Навіщо використовувати подвійну непрямість? або Навіщо використовувати вказівники для покажчиків?
Коли слід застосовувати подвійну непрямість у С? Хтось може пояснити прикладом? Що я знаю, це те, що подвійне непряме є вказівником на вказівник. Навіщо мені потрібен вказівник на покажчик?
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
Що насправді відкриває файл?
В усіх мовах програмування (якими я користуюся щонайменше) ви повинні відкрити файл, перш ніж ви зможете прочитати чи записати на нього. Але що насправді робить ця відкрита операція? Сторінки вручну для типових функцій насправді нічого не говорять, окрім того, що це "відкриває файл для читання / запису": http://www.cplusplus.com/reference/cstdio/fopen/ https://docs.python.org/3/library/functions.html#open Очевидно, …
266 c  linux 

11
Чи є bool рідним типом С?
Я помітив, що код ядра 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і y, C і 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.