lima-city: Webhosting, Domains und Cloud
1 Pluspunkt 0 Minuspunkte

Angenommen ich habe 2 Funktionen (main und test). Ich erstelle in main() ein Float und dem möchte ich in test() via Pointer einen Wert zuweisen. Wie geht das?

#include <stdio.h>

void test(float *val)
{
	val = 1.1f;
}

int main(int argc, char **argv) 
{
	float *f;
	test(&f);
	printf("%f", f);
	return 0;
}
von  

1 Antwort

0 Pluspunkte 0 Minuspunkte

Der Code hat mehrere Probleme mit Typen und führt zu undefiniertem Verhalten. test() ist so deklariert

void test(float *val)

Du rufst es aber auf mit

float *f;
test(&f);

f ist ein float*, also ist &f ein float** (Pointer auf Pointer). Das passt nicht zu float*. In test() steht

val = 1.1f;

val ist ein Pointer (float *), 1.1f ist ein Float. Hier musst du den Pointer dereferenzieren.

*val = 1.1f;

Alles zusammen:

void test(float *val)
{
	*val = 1.1f;
}

int main(int argc, char **argv) 
{
	float f;
	test(&f);
	printf("%f", f);
	return 0;
}
von (781 Punkte)  
Diese Community basiert auf dem Prinzip der Selbstregulierung. Beiträge werden von Nutzern erstellt, bewertet und verbessert – ganz ohne zentrale Moderation.

Wer hilfreiche Fragen stellt oder gute Antworten gibt, sammelt Punkte. Mit steigender Punktzahl erhalten Mitglieder automatisch mehr Rechte, zum Beispiel

  • Kommentare verfassen
  • Fragen und Antworten bewerten
  • Themen von Fragen bearbeiten
  • Fragen, Antworten und Kommentare bearbeiten
  • Inhalte ausblenden

So entsteht eine Plattform, auf der sich Qualität durchsetzt – getragen von einer engagierten Gemeinschaft.

2,517 Fragen

3,033 Antworten

281 Kommentare

13 Nutzer