Heim  >  Artikel  >  Backend-Entwicklung  >  Können Variablen mit demselben Namen in verschiedenen Funktionen verwendet werden?

Können Variablen mit demselben Namen in verschiedenen Funktionen verwendet werden?

青灯夜游
青灯夜游Original
2021-01-28 16:11:2423996Durchsuche

Kann verwendet werden. Die in der Funktion in C-Sprache beschriebenen Variablen sind lokale Variablen, die nur innerhalb der Funktion funktionieren und keine Auswirkungen auf andere Funktionen haben. Die Verwendung desselben Variablennamens in verschiedenen Funktionen bedeutet nicht, dass es sich um dieselbe Variable handelt.

Können Variablen mit demselben Namen in verschiedenen Funktionen verwendet werden?

Die Betriebsumgebung dieses Tutorials: Windows 7-System, c99-Version, Dell G3-Computer.

Sie können Variablen mit demselben Namen in verschiedenen Funktionen verwenden.

Empfohlenes Tutorial: „C-Sprach-Tutorial-Video

Variablen (lokale Variablen), die innerhalb der Funktion definiert sind

Variablen, die innerhalb der Funktion definiert sind, ihr Umfang ist auch auf das Innere der Funktion außerhalb der Funktion beschränkt Es kann nicht verwendet werden. Wir nennen solche Variablen lokale Variablen (lokale Variable). Auch die formalen Parameter einer Funktion sind lokale Variablen und können nur innerhalb der Funktion verwendet werden.

int f1(int a){
    int b,c;  //a,b,c仅在函数f1()内有效
    return a+b+c;
}
int main(){
    int m,n;  //m,n仅在函数main()内有效
    return 0;
}

Einige Hinweise:

1) In der Hauptfunktion definierte Variablen sind auch lokale Variablen und können nur gleichzeitig in der Hauptfunktion verwendet werden. In anderen Funktionen definierte Variablen können nicht in der Hauptfunktion verwendet werden. Die Hauptfunktion ist ebenfalls eine Funktion und steht anderen Funktionen gleich.

2) Formale Parametervariablen und im Funktionskörper definierte Variablen sind alle lokale Variablen. Der Prozess der Übertragung von Werten von tatsächlichen Parametern auf formale Parameter ist auch der Prozess der Zuweisung von Werten zu lokalen Variablen.

3) Sie können denselben Variablennamen in verschiedenen Funktionen verwenden. Sie repräsentieren unterschiedliche Daten und weisen unterschiedliche Speicher zu, ohne sich gegenseitig zu stören oder Verwirrung zu stiften.

4) Variablen können auch in Anweisungsblöcken definiert werden und ihr Gültigkeitsbereich ist auf den aktuellen Anweisungsblock beschränkt.

Informationen zur Variablenbenennung

Jeder Teil des ausführbaren C-Sprachcodes enthält mehrere Bereiche, selbst der einfachste C-Sprachcode.

int main(){
    return 0;
}

Dies ist der einfachste, ausführbare C-Sprachcode. Er enthält zwei Bereiche, einen ist der lokale Bereich innerhalb der main()-Funktion und der andere ist der globale Bereich außerhalb der main()-Funktion.

Die C-Sprache legt fest, dass zwei Variablen mit demselben Namen nicht im selben Bereich erscheinen dürfen, da sonst ein Namenskonflikt auftritt. Variablen mit demselben Namen dürfen jedoch in unterschiedlichen Bereichen erscheinen und ihre Bereiche unterscheiden sich voneinander. Es wird keinen Konflikt zwischen ihnen geben. Dieser Satz hat zwei Bedeutungen:

  • Variablen mit demselben Namen können innerhalb verschiedener Funktionen erscheinen, und verschiedene Funktionen haben unterschiedliche lokale Gültigkeitsbereiche.

  • Variablen mit demselben Namen können innerhalb und außerhalb von Funktionen sowie im Inneren von a erscheinen Die Funktion ist ein lokaler Bereich, außerhalb der Funktion befindet sich der globale Bereich.

1) Variablen mit demselben Namen in verschiedenen Funktionen sind zwei völlig unabhängige Variablen. Sie haben keine Korrelation oder Einfluss aufeinander.

#include <stdio.h>

void func_a(){
    int n = 100;
    printf("func_a: n = %d\n", n);
    n = 86;
    printf("func_a: n = %d\n", n);
}

void func_b(){
    int n = 29;
    printf("func_b: n = %d\n", n);
    func_a(); //调用func_a()
    printf("func_b: n = %d\n", n);
}

int main(){
    func_b();
    return 0;
}

Operationsergebnisse:

func_b: n = 29
func_a: n = 100
func_a: n = 86
func_b: n = 29

Sowohl func_a() als auch func_b() definieren intern eine Variable n. In func_b() ist der Anfangswert von n 29. Nach dem Aufruf von func_a() ist der Wert von n immer noch 29. Dies zeigt, dass das n in func_b() keinen Einfluss auf das n in func_a() hat. Diese beiden n's sind völlig unterschiedliche Variablen. Sie haben nur den gleichen Namen. Es ist nur ein Zufall.

2) Wenn die lokale Variable innerhalb der Funktion und die globale Variable außerhalb der Funktion denselben Namen haben, wird die globale Variable im lokalen Bereich der aktuellen Funktion „abgeschirmt“ und hat keine Wirkung mehr. Mit anderen Worten: Innerhalb der Funktion werden lokale Variablen verwendet, keine globalen Variablen.

Die Verwendung von Variablen folgt dem Prinzip der Nähe. Wenn eine Variable mit demselben Namen im aktuellen lokalen Bereich gefunden wird, wird sie nicht im größeren globalen Bereich durchsucht. Darüber hinaus können Sie nur nach Variablen von einem kleinen Bereich zu einem großen Bereich suchen, nicht jedoch umgekehrt, indem Sie Variablen in einem kleineren Bereich verwenden.

Lassen Sie uns dies anhand eines konkreten Beispiels veranschaulichen:

#include <stdio.h>

int n = 10;  //全局变量

void func1(){
    int n = 20;  //局部变量
    printf("func1 n: %d\n", n);
}

void func2(int n){
    printf("func2 n: %d\n", n);
}

void func3(){
    printf("func3 n: %d\n", n);
}

int main(){
    int n = 30;  //局部变量
    func1();
    func2(n);
    func3();
    printf("main n: %d\n", n);
   
    return 0;
}

Laufergebnis:

func1 n: 20
func2 n: 30
func3 n: 10
main n: 30

Obwohl im Code mehrere Variablen n mit demselben Namen definiert sind, sind ihre Bereiche unterschiedlich, sodass keine Namenskonflikte auftreten.

Das Folgende ist eine Analyse der Ausgabeergebnisse:

Für func1() ist das Ausgabeergebnis 20, offensichtlich wird das interne n von func1() anstelle des externen n verwendet.

Wenn func2() aufgerufen wird, wird der tatsächliche Parameter n in main() an den formalen Parameter n in func2() übergeben. Zu diesem Zeitpunkt wird der Wert des formalen Parameters n 30. Der formale Parameter n ist ebenfalls eine lokale Variable und wird daher verwendet.

func3() gibt 10 aus und verwendet dabei globale Variablen. Da es in func3() keine lokale Variable n gibt, kann der Compiler nur nach Variable n außerhalb der Funktion suchen, also im globalen Bereich. Die printf()-Anweisung in

main() gibt 30 aus, was darauf hinweist, dass das n in main() anstelle des externen n verwendet wird.

Weitere Kenntnisse zum Thema Programmierung finden Sie unter: Programmierlehre! !

Das obige ist der detaillierte Inhalt vonKönnen Variablen mit demselben Namen in verschiedenen Funktionen verwendet werden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn