int find(char* source/*source string*/, char* target/*substring*/)//Wenn gefunden, wird die Position in der Quellzeichenfolge zurückgegeben. Wenn nicht, wird -1 zurückgegeben Ändern Sie es, um 1 zu finden und zurückzugeben, und ändern Sie Return i, um 1 zurückzugeben;
{
int i,j;
int s_len=strlen(source);
int t_len=strlen(target);
if(t_len>s_len)
{
return -1;
}
for(i=0;i
{
j=0;
int flag=1;
if(source[i]==target[j])
{
int k,p=i;
for(k=0;k {
if(source[p]==target[j])
{
p++;
j++;
weiter;
}
sonst
{
flag=0;
Pause;
}
}
}
sonst
{
weiter;
}
if(flag==1)
{
return i;
}
}
return -1;
}
Funktionszeiger sind manchmal sehr nützlich. Durch die Definition eines Funktionszeigers in einer Struktur können Funktionen implementiert werden, die den C++-Klassenmitgliedsfunktionen in der C-Sprache ähneln.
Das folgende Programm definiert ein Array von Funktionszeigern. Entsprechend dem Rest der Eingabenummer (1 oder 0) kann die entsprechende Funktion ohne if else aufgerufen werden.
//Die Eingabe ist eine ungerade Zahl
void FuncOdd(int n)
{
float i, nIterator = 0;
printf("Sie haben eine ungerade Zahl eingegeben.n");
für (i = 1; i {
nIterator+=1/i;
}
printf("Und das Ergebnis ist: %fn",nIterator);
}
//Die Eingabe ist eine gerade Zahl
void FuncEven(int n)
{
float i, nIterator = 0;
printf("Sie haben eine gerade Zahl eingegeben;n");
für (i = 2; i {
nIterator+=1/i;
}
printf("Und das Ergebnis ist: %fn",nIterator);
}
int main()
{
int nInput = 0; // Die eingegebene Zahl speichern
void (*func[2])(int); // Funktionszeiger so definieren, dass sie auf zwei verschiedene Funktionen zeigen
func[0] = FuncEven;
func[1] = FuncOdd;
printf("Bitte geben Sie eine Zahl ein:"); // Eingabe von der Konsole erhalten
scanf("%d",&nInput);
(*func[nInput%2])(nInput); // Rufen Sie die entsprechende Funktion basierend auf der Eingabenummer auf
return 0;
}
int top sollte nicht zur Kategorie der Zeiger gehören, aber die Definition gemeinsamer Variablen von int hängt davon ab, wie es verwendet wird. Es kann anhand negativer Zahlen, 0 und positiver Zahlen beurteilt werden Es wird als spezielle Definitionskennung verwendet. Wenn diese Variable ein Zähler in einer Schleife ist (d. h. wenn die Anzahl der Schleifen zunimmt oder abnimmt), können Sie bestimmen, wie oft die Schleife erfolgreich ausgeführt wurde
Reader ist ein Klassenname, was bedeutet, dass die Klasse auch ein Datentyp istGenau wie int ist es ein Datentypname
Reader read[Maxr]; bedeutet, dass eine Array-Variable dieses Typs wahrscheinlich ein durch ein Makro definierter Wert ist
Warum kann es so definiert werden? Das liegt daran, dass die Klasse jeden Datentyp enthalten kann (derselbe wie die Struktur in c), einschließlich externer Klassen.
Das obige ist der detaillierte Inhalt vonImplementierung von mit Zeigern geschriebenen C-Sprachfunktionen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!