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.


8
Was macht der Systemaufruf brk ()?
Laut Linux-Programmierhandbuch: brk () und sbrk () ändern den Ort der Programmunterbrechung, wodurch das Ende des Datensegments des Prozesses definiert wird. Was bedeutet das Datensegment hier? Ist es nur das Datensegment oder Daten, BSS und Heap kombiniert? Laut Wiki: Manchmal werden die Daten-, BSS- und Heap-Bereiche gemeinsam als "Datensegment" bezeichnet. …
184 c  linux  unix  memory-management  brk 


8
Überladen des Makros für die Anzahl der Argumente
Ich habe zwei Makros FOO2und FOO3: #define FOO2(x,y) ... #define FOO3(x,y,z) ... Ich möchte ein neues Makro FOOwie folgt definieren: #define FOO(x,y) FOO2(x,y) #define FOO(x,y,z) FOO3(x,y,z) Dies funktioniert jedoch nicht, da Makros die Anzahl der Argumente nicht überladen. Ohne Modifikation FOO2und FOO3ist es eine Möglichkeit , ein Makro zu definieren …
183 c  macros  c-preprocessor 

16
C Datei zeilenweise lesen
Ich habe diese Funktion geschrieben, um eine Zeile aus einer Datei zu lesen: 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 …
183 c  file-io  line  std 



8
Wie vergleiche ich Strings richtig?
Ich versuche, ein Programm dazu zu bringen, dass ein Benutzer ein Wort oder Zeichen eingibt, es speichert und dann druckt, bis der Benutzer es erneut eingibt und das Programm beendet. Mein Code sieht folgendermaßen aus: #include <stdio.h> int main() { char input[40]; char check[40]; int i=0; printf("Hello!\nPlease enter a word …
182 c  string  strcmp 

6
Wie werden mehrdimensionale Arrays im Speicher formatiert?
In C weiß ich, dass ich ein zweidimensionales Array auf dem Heap mithilfe des folgenden Codes dynamisch zuordnen kann: int** someNumbers = malloc(arrayRows*sizeof(int*)); for (i = 0; i < arrayRows; i++) { someNumbers[i] = malloc(arrayColumns*sizeof(int)); } Dies erzeugt eindeutig ein eindimensionales Array von Zeigern auf eine Reihe separater eindimensionaler Arrays …

2
Realistische Verwendung des C99-Schlüsselworts "einschränken"?
Ich habe einige Dokumentationen und Fragen / Antworten durchgesehen und gesehen, dass sie erwähnt wurden. Ich las eine kurze Beschreibung und erklärte, dass es im Grunde ein Versprechen des Programmierers wäre, dass der Zeiger nicht verwendet wird, um auf eine andere Stelle zu zeigen. Kann jemand einige realistische Fälle anbieten, …
182 c  gcc  c99  restrict-qualifier 

6
Wie definiere und verwende ich eine ENUM in Objective-C?
Ich habe eine Aufzählung in meiner Implementierungsdatei wie unten gezeigt deklariert und eine Variable dieses Typs in meiner Schnittstelle als PlayerState thePlayerState deklariert. und verwendete die Variable in meinen Methoden. Aber ich bekomme Fehler, die besagen, dass es nicht deklariert ist. Wie deklariere und verwende ich eine Variable vom Typ …
180 iphone  objective-c  c 

16
Wo sind statische Variablen in C und C ++ gespeichert?
In welchem ​​Segment (.BSS, .DATA, other) einer ausführbaren Datei werden statische Variablen gespeichert, damit sie keine Namenskollision haben? Beispielsweise: 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++; …



10
Switch-Anweisung: Muss standardmäßig der letzte Fall sein?
Betrachten Sie die folgende switchAussage: switch( value ) { case 1: return 1; default: value++; // fall-through case 2: return value * 2; } Dieser Code wird kompiliert, aber ist er für C90 / C99 gültig (= definiertes Verhalten)? Ich habe noch nie Code gesehen, bei dem der Standardfall nicht …

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.