Maison >tutoriels informatiques >connaissances en informatique >Implémentation de fonctions en langage C écrites à l'aide de pointeurs
int find(char* source/*source string*/, char* target/*substring*/)//Si trouvé, renvoie la position dans la chaîne source. S'il n'est pas trouvé, il renverra -1 si vous le souhaitez. changez-le pour trouver et renvoyer 1, changez Return i est modifié pour renvoyer 1 ;
{
int i,j;
int s_len=strlen(source);
int t_len=strlen(target);
if(t_len>s_len)
{
retour -1;
}
pour(i=0;i
{
j=0;
int drapeau=1;
if(source[i]==cible[j])
{
int k,p=i;
pour(k=0;k {
if(source[p]==cible[j])
{
p++;
j++;
continuer ;
}
autre
{
drapeau=0;
pause;
}
}
}
autre
{
continuer ;
}
if(drapeau==1)
{
je reviens;
}
}
retour -1;
}
Les pointeurs de fonction sont parfois très utiles. Par exemple, définir un pointeur de fonction dans une structure peut implémenter des fonctionnalités similaires aux fonctions membres de la classe C++ en langage C.
Le programme suivant définit un tableau de pointeurs de fonction Selon le reste du nombre saisi (1 ou 0), la fonction correspondante peut être appelée sans if else.
//L'entrée est un nombre impair
void FuncOdd(int n)
{
float i, nItérateur = 0;
printf("Vous avez entré un nombre impair.n");
pour (i = 1; i {
nItérateur+=1/i;
}
printf("Et le résultat est : %fn",nIterator);
}
//L'entrée est un nombre pair
void FuncEven(int n)
{
float i, nItérateur = 0;
printf("Vous avez entré un nombre pair;n");
pour (i = 2; i {
nItérateur+=1/i;
}
printf("Et le résultat est : %fn",nIterator);
}
int main()
{
int nInput = 0; // Stocke le numéro saisi
void (*func[2])(int); // Définir des pointeurs de fonction pour pointer vers deux fonctions différentes
func[0] = FuncEven;
func[1] = FuncOdd;
printf("Veuillez saisir un nombre :"); // Récupérer les données de la console
scanf("%d",&nInput);
(*func[nInput%2])(nInput); // Appelez la fonction correspondante en fonction du numéro d'entrée
retour 0;
}
int top ne doit pas appartenir à la catégorie des pointeurs, mais la définition des variables communes de int dépend de la façon dont il est utilisé. S'il est utilisé en fonction de nombres négatifs, 0 et positifs, on peut juger que. elle est utilisée comme cette classe. Un identifiant de définition spécial ; si cette variable est un compteur dans une boucle (ce qui signifie que lorsque le nombre de boucles augmente ou diminue), vous pouvez déterminer combien de fois la boucle a été exécutée avec succès
Reader est un nom de classe, ce qui signifie que la classe est également un type de données
Tout comme int, c'est un nom de type de données
Reader read[Maxr]; signifie qu'une variable tableau de ce type est définie. Marxr est probablement une valeur définie par une macro
.Pourquoi peut-il être défini comme ceci ? Cela devrait être le cas parce que la classe peut contenir n'importe quel type de données (le même que struct en c), y compris les classes externes
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!