Als «c» getaggte Fragen

C ist eine universelle Programmiersprache, die für die Systemprogrammierung (Betriebssystem und eingebettet), Bibliotheken, Spiele und plattformübergreifende Programme verwendet wird. Dieses Tag sollte bei allgemeinen Fragen zur C-Sprache verwendet werden, wie in der Norm ISO 9899 definiert (die neueste Version, 9899: 2018, sofern nicht anders angegeben - auch tagversionsspezifische Anforderungen mit c89, c99, c11 usw. kennzeichnen). C unterscheidet sich von C ++ und sollte ohne einen rationalen Grund nicht mit dem C ++ - Tag kombiniert werden.

25
Warum wird die Verwendung von alloca () nicht als bewährte Methode angesehen?
alloca()ordnet Speicher eher auf dem Stapel als auf dem Heap zu, wie im Fall von malloc(). Wenn ich von der Routine zurückkehre, wird der Speicher freigegeben. Tatsächlich löst dies mein Problem, dynamisch zugewiesenen Speicher freizugeben. Die Freigabe des zugewiesenen Speichers bereitet malloc()große Kopfschmerzen und führt, wenn sie irgendwie übersehen wird, …
401 c  stack  malloc  allocation  alloca 

1
Der endgültige C-Buchführer und die Liste
Die Antworten dieser Frage sind eine Gemeinschaftsanstrengung . Bearbeiten Sie vorhandene Antworten, um diesen Beitrag zu verbessern. Derzeit werden keine neuen Antworten oder Interaktionen akzeptiert. Diese Frage versucht eine Gemeinschaft gepflegt Liste zu sammeln Qualität Bücher über diec Programmiersprache für verschiedene Schwierigkeitsgrade. C ist eine komplexe Programmiersprache, die unterwegs nur …
400 c 

16
Statische Verknüpfung vs. dynamische Verknüpfung
Gibt es zwingende Leistungsgründe, in bestimmten Situationen statische Verknüpfungen gegenüber dynamischen Verknüpfungen zu wählen oder umgekehrt? Ich habe Folgendes gehört oder gelesen, aber ich weiß nicht genug über das Thema, um für seine Richtigkeit zu bürgen. 1) Der Unterschied in der Laufzeitleistung zwischen statischer und dynamischer Verknüpfung ist normalerweise vernachlässigbar. …

12
Wo finde ich die aktuellen C- oder C ++ - Standarddokumente?
Die Antworten dieser Frage sind eine Gemeinschaftsanstrengung . Bearbeiten Sie vorhandene Antworten, um diesen Beitrag zu verbessern. Derzeit werden keine neuen Antworten oder Interaktionen akzeptiert. Stа этот вопрос есть ответы на Stapelüberlauf на русском : Где взять стандарт C ++? Bei vielen Fragen scheint die Antwort im "Standard" zu liegen. …
394 c++  c  standards  c++-faq 



10
Warum wird eine Funktion ohne Parameter (im Vergleich zur tatsächlichen Funktionsdefinition) kompiliert?
Ich bin gerade auf den C-Code von jemandem gestoßen, bei dem ich verwirrt bin, warum er kompiliert wird. Es gibt zwei Punkte, die ich nicht verstehe. Erstens hat der Funktionsprototyp keine Parameter im Vergleich zur tatsächlichen Funktionsdefinition. Zweitens hat der Parameter in der Funktionsdefinition keinen Typ. #include <stdio.h> int func(); …

11
Woher weiß frei, wie viel frei ist?
In der C-Programmierung können Sie jede Art von Zeiger, die Sie möchten, als Argument an free übergeben. Woher weiß es, wie groß der zugewiesene Speicher ist, der freigegeben werden soll? Immer wenn ich einen Zeiger auf eine Funktion übergebe, muss ich auch die Größe übergeben (dh ein Array von 10 …
385 c  size  pointers  free 






14
Undefinierter Verweis auf pthread_create unter Linux
Ich habe die folgende Demo aus dem Internet unter https://computing.llnl.gov/tutorials/pthreads/ abgerufen. #include <pthread.h> #include <stdio.h> #define NUM_THREADS 5 void *PrintHello(void *threadid) { long tid; tid = (long)threadid; printf("Hello World! It's me, thread #%ld!\n", tid); pthread_exit(NULL); } int main (int argc, char *argv[]) { pthread_t threads[NUM_THREADS]; int rc; long t; for(t=0; …

7
Warum wirkt sich die Reihenfolge der Schleifen auf die Leistung aus, wenn über ein 2D-Array iteriert wird?
Unten sind zwei Programme aufgeführt, die fast identisch sind, außer dass ich die Variablen iund umgeschaltet habe j. Sie laufen beide in unterschiedlicher Zeit. Könnte jemand erklären, warum dies passiert? Version 1 #include <stdio.h> #include <stdlib.h> main () { int i,j; static int x[4000][4000]; for (i = 0; i < …

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.