Ich codiere etwas Kleines, um zu verstehen, wie Zeiger funktionieren und ein Problem erreicht haben. Ich habe ein boolean, auf den „gültig“ in einer Datei namens „main.c“:Wie initialisiert man einen bool Zeiger in C?
bool *valid;
Die Adresse des Zeigers wird in einer zweiten Datei mit dem Namen „test.c“ an eine Methode übergeben:
method(&valid);
im Innern der "test.c" Methode I gültig auf true gesetzt:
*valid = true;
nach dem Methodenaufruf in "main.c" ich dereferenzieren gültig in zwei if-Anweisungen, um zu sehen, ob es wahr oder falsch ist:
if (*valid) {
printf("valid is true.\n");
}
if (!(*valid)) {
printf("valid is false.\n");
}
Beide Anweisungen drucken, aber nur "gültig ist wahr" sollte. Was könnte das Problem hier sein?
Wenn Sie * valid = true verwenden, möchten Sie den addressof-Operator nicht verwenden, wenn Sie den Zeiger auf method() übergeben. – Omaha
Was sagt Ihr Compiler dazu? – EOF
Die Veröffentlichung eines [minimalen, vollständigen und überprüfbaren Beispiels] (https://stackoverflow.com/help/mcve) würde helfen. Ich bin ziemlich sicher, dass Ihre Compilerwarnungen Ihnen bereits die Antwort sagen. – user3386109