Intégré de l'entrée à la compétence (dans le sol) - partage de points de connaissances ultra-détaillé 2

Linux C de l'entrée à la compétence (dans le sol)

  1. Bases du langage C (instruction de boucle)

  2. pour la boucle

  3. Format :
    For (expression 1 ; expression 2 ; expression 3)
    { corps de la boucle ; } Expression 1 : attribuer une valeur initiale ; expression 2 : condition de fin ; expression 3 : incrémenter ou décrémenter. Remarque : a) S'il n'y a pas d'expression d'affectation de valeur initiale, elle peut être écrite au-dessus de la boucle for ; b) Sans l'expression 2, la boucle est une boucle sans fin, et sans l'expression 3 est également une boucle sans fin, mais l'expression 3 peut être écrit à la fin du corps de la boucle. c) pour (;;) : indique une boucle infinie.








  4. La séquence d'exécution
    exécute d'abord l'expression 1, puis juge si l'expression 2 est vraie, exécute le corps de la boucle lorsqu'elle est établie, puis exécute l'expression 3, puis juge si l'expression 2 est vraie, puis continue à exécuter le corps de la boucle, puis exécute l'expression 3...jusqu'à l'expression Si la formule 2 n'est pas établie, la boucle se termine.

  5. for format imbriqué
    for (expression 1; expression 2; expression 3)
    { for (expression 1; expression 2; expression 3) { corps de la boucle; } }




  6. boucle while

  7. Format 1
    While (expression)
    { corps de la boucle ; } Séquence d'exécution : juge si l'expression est vraie, exécute le corps de la boucle, puis juge si l'expression est vraie, exécute le corps de la boucle, ... jusqu'à ce que l'expression ne soit pas vraie, le la boucle se termine. Remarque : while(1) = boucle infinie.



  8. Format 2 : do...while
    do{ corps de la boucle ; }while (expression) ; Séquence d'exécution : exécutez d'abord le corps de la boucle une fois, puis jugez s'il est vrai, continuez à exécuter le corps de la boucle s'il est vrai et terminez la boucle si ce n'est pas vrai.


  9. aller à la boucle

  10. Boucle de format
     :
    segment de code ;
    si (expression)
    aller à la boucle ;

  11. Séquence d'exécution :
    exécutez le segment de code, déterminez si l'expression est vraie et passez à la boucle pour continuer à exécuter le segment de code s'il est vrai.

  12. Instruction de contrôle de boucle : pause ; continuer ; retour

  13. break : sauter hors de la boucle (mettre fin à la boucle) ;

  14. continue : termine ce cycle et passe au cycle suivant.

  15. retour : fonction de fin. Dans la fonction Main, le contenu de la fonction main n'est pas exécuté normalement, et il est d'usage d'écrire : return -1;

  16. tableau

  17. Concept :
    Une collection de données d'un ou plusieurs types de données, et chaque donnée qui compose un tableau est appelée un élément.

  18. Caractéristiques
    Même type de données, espace mémoire continu.

  19. tableau unidimensionnel

  20. Concept : un tableau avec un seul indice.

  21. Format de définition :
    [type de stockage] nom du tableau de type de données [indice] ;
    indice : le nombre d'éléments.

  22. Accès à l'élément : nom du tableau [indice].
    La valeur de l'indice : à partir de 0, le nombre d'éléments = le nombre d'indices - 1 ;

  23. Initialisation
    a) Non initialisé à la définition
    La valeur initiale est une valeur aléatoire. Ensuite, les valeurs initiales doivent être attribuées élément par élément, et les éléments sans valeurs initiales sont toujours des valeurs aléatoires.
    b) Partiellement initialisé au moment de la définition.
    La valeur des éléments non initialisés est 0.
    c) Tous initialisés au moment de la définition.
    L'indice peut être omis.

  24. sizeof (nom du tableau) : calcule la taille de l'espace occupé par le tableau.

  25. Avis:

  26. Si l'indice est omis lors du développement, l'espace de développement est le nombre d'éléments correspondant au nombre d'initialisations. Si l'indice n'est pas omis, autant de valeurs d'indice ouvrent autant d'espaces d'éléments, seul le nombre d'éléments peut être initialisé comme valeur d'indice.

  27. Une fois le tableau défini, l'espace mémoire ouvert est déterminé, et l'indice ne peut pas être une valeur aléatoire ou une quantité inconnue lorsqu'il est défini.

  28. Lors de l'accès aux données hors limites, aucune erreur n'est signalée et une attention particulière doit être portée aux problèmes hors limites lors de leur utilisation.

  29. Triage : bullage, sélection

  30. Tri à bulles : l'indice est 0 et l'indice est 1, le petit nombre est reculé, puis l'indice est comparé à l'indice 1 et l'indice est 2, et le petit est reculé jusqu'à ce que le plus petit soit mis à la fin. Recommencez et mettez le deuxième plus petit nombre à l'avant-dernière position. Trier par analogie.

  31. Tableau à deux dimensions

  32. Concept : un tableau avec deux indices.

  33. Format :
    [type de stockage] type de données nom du tableau [indice de ligne] [indice de colonne]
    contenu de l'élément d'accès : nom du tableau [ligne] [colonne] ; la valeur de l'indice commence à partir de 0.

  34. Itérer sur un tableau à deux dimensions : boucles imbriquées

  35. Problème d'initialisation de tableau local à deux dimensions

  36. Il n'est pas initialisé au moment de la définition, et la valeur initiale est une valeur aléatoire, et la prochaine affectation doit être affectée une par une.

  37. Il est partiellement initialisé lorsqu'il est défini, et il est initialisé à 0.

  38. Tous sont initialisés lorsqu'ils sont définis et l'indice de ligne peut être omis.

  39. Le problème d'adresse du tableau
    Dans l'ordinateur, les octets sont utilisés comme unités, et chaque octet a son propre numéro d'adresse. Si l'espace est défini pour enregistrer le numéro d'adresse, 32 signifie que le numéro d'adresse du système d'exploitation est de 32 bits, et 4 octets doivent être ouverts, et le numéro d'adresse d'un système d'exploitation 64 bits est de 64 bits, et 8 octets doivent être ouverts.
    L'espace mémoire du tableau est continu, et l'adresse du premier élément peut être obtenue en ajoutant 1 à l'adresse du second élément.

  40. Tableau unidimensionnel
    Le nom de tableau d'un tableau unidimensionnel est l'adresse de tête du tableau unidimensionnel d, qui est l'adresse du premier élément et est une constante d'adresse. Une fois le tableau défini, l'adresse de tête est déterminée et ne peut pas être modifié.
    a) Adresse + 1 : Récupère l'adresse de l'élément suivant.
    b) Ajouter * avant l'adresse, ce qui signifie récupérer le contenu de l'adresse.
    c) Accès direct au contenu de l'élément : st[i] *(st+i)
    d) Accès direct à l'adresse de l'élément : &st[i] st+i.

  41. Tableau à deux dimensions
    Le nom de tableau du tableau à deux dimensions indique l'adresse de la première ligne du tableau à deux dimensions, qui est une adresse de ligne et une constante d'adresse. Ajoutez 1 au nom du tableau pour indiquer l'adresse de la ligne suivante.
    La deuxième utilisation de a) : ajouter avant l'adresse de ligne pour réduire l'adresse de ligne à l'adresse de colonne.
    b) Les tableaux à deux dimensions peuvent être considérés comme plusieurs tableaux à une dimension, et les noms de tableau de chaque tableau à une dimension sont : st[0], st[1], st[2]...st[n-1 ].
    c) Nom du tableau [indice de ligne] : Indique l'adresse du premier élément de chaque ligne.
    d) Accès direct au contenu de l'élément : st[i][j] ; ( (st+i)+j) ; *(st[i]+j)
    e) Accès direct à l'adresse de l'élément : &st[i][j] ; * (st+i)+j; st[i]+j.

  42. fonctions de manipulation de chaînes

  43. gets Obtient une chaîne du terminal
    a) Fonction : Obtient une chaîne du terminal, et ajoutera automatiquement '\0' ;
    b) Paramètre : Obtient la première adresse où la chaîne est stockée.
    c) Valeur de retour : en cas de succès, renvoie l'adresse où la chaîne de caractères est stockée
     ; en cas d'échec, renvoie NULL.
    Remarque : combien est entré par le terminal, combien est pris par les get, il n'y a aucun problème à franchir la limite du demi-grand réseau de détection, alors utilisez-le moins.

  44. place la chaîne de sortie sur le terminal
    a) Fonction : chaîne de sortie sur l'affichage du terminal.
    b) Paramètre : la première adresse de la chaîne de sortie.
    c) Valeur de retour : succès : le nombre de caractères de sortie ; échec : EOF (-1).

  45. Fonction d'effacement : memset ; bzero

  46. memset (s,c,n) :
    a) Fonction : effacer.
    b) Paramètres : s : première adresse du contenu effacé ; c : 0 ; n : octets effacés.
    c) Valeur de retour : succès : vider les premières adresses du contenu ; échec : NULL.

  47. bzero(s,n)
    a) Fonction : clear.
    b) Paramètres : s : la première adresse du contenu effacé ; n : octets effacés.
    c) Valeur de retour : Aucune.

  48. aiguille

  49. Pointeur de niveau 1
    a) Pointeur : C'est l'adresse.
    b) Format de définition : [type de stockage] type de données*pointeur nom de variable
    Remarque : Pour tout type de variable, il est nécessaire de définir un pointeur du type correspondant pour enregistrer l'adresse de la variable, afin que la variable soit accessible indirectement à travers le pointeur.

  50. Trois usages de
    a) Ajouter avant l'adresse
    : prendre le contenu de l'adresse.
    b) Ajouter * avant l'adresse de la ligne : rétrograder à l'adresse de la colonne (adresse de l'élément).
    c) Ajouter * après le type de données : cela signifie définir une variable pointeur de type correspondant.

  51. Combiner des pointeurs et des tableaux

  52. Pointeur et tableau unidimensionnel :
    enregistrez la première adresse du tableau unidimensionnel via le pointeur et laissez la variable de pointeur remplacer le nom du tableau unidimensionnel pour accéder indirectement au tableau unidimensionnel.
    Les noms de tableau sont des constantes d'adresse. Les variables de pointeur sont des variables qui peuvent changer pendant l'exécution du programme

  53. Accès indirect au tableau à une dimension
    Adresse : p+i; &p[i];
    contenu : *(p+i); p[i].

  54. arithmétique du pointeur

  55. Opération arithmétique
    a) + : le pointeur p+n déplace n données dans le sens de la grande adresse
    b) – : le pointeur pn déplace n données dans le sens de la petite adresse
    c) ++ : le pointeur p++ déplace un nombre dans le sens de la grande adresse
    d ) – : p—le pointeur déplace 1 donnée vers la plus petite adresse
    e) - : pq le nombre d'éléments de données séparés entre deux pointeurs

  56. Opérations relationnelles

< >= <= != ==
Celui avec la plus grande adresse est supérieur à celui avec la plus petite adresse.

  1. Opérations d'affectation :
    = += -=
    Il est inutile d'effectuer des opérations entre des pointeurs de types de données différents.
  2. pointeur secondaire
  3. Concept : ce qui est enregistré est l'adresse de l'instrument et le pointeur.
  4. Format : [type de stockage] type de données**nom de la variable du pointeur ;
    remarque : tant qu'il s'agit d'un pointeur, il enregistre le numéro d'adresse et le pointeur du système d'exploitation 32 bits ouvre 4 octets.
  5. Const constantisation
  6. const variable modifiée
    const variable modifiée, la valeur de la variable ne peut pas être modifiée via le nom de la variable, mais un pointeur peut être défini pour pointer vers la variable, et la valeur peut être modifiée en accédant au contenu de l'adresse via le pointeur.
  7. const pointeur modifié a) Le pointeur de
    const int *p peut être modifié, mais la personne pointée par le pointeur ne peut pas être modifiée par le pointeur. b) Le pointeur int * const p ne peut pas être modifié, et le contenu pointé par le pointeur peut être modifié via le pointeur. Remarque : Le pointage du pointeur n'étant pas modifiable, un pointage ne peut être attribué qu'au moment de la définition. c) Le pointeur const int * const p ne peut pas être modifié, et le contenu pointé par le pointeur ne peut pas être modifié par le pointeur.





  8. void type vide
    Il n'y a pas de variable de type void, et void peut être utilisé pour modifier des pointeurs, des fonctions ou comme paramètres de fonction.
  9. void pointeur modifié
    Le pointeur void* peut correspondre à n'importe quel type d'adresse, mais il doit être converti dans le type d'adresse correspondant lors de son utilisation.
  10. Transfert forcé
  11. Conversion forcée du type de données Format
     : variable = valeur (type de données) ;
    il s'agit généralement d'une conversion implicite et une faible précision est convertie en une opération de haute précision pendant l'opération.
  12. Conversion forcée du type de pointeur
    Format : variable de pointeur = (type de données *) valeur d'adresse.
  13. Big et small endian
    a) Stockage big endian : l'adresse basse stocke le contenu en octets de poids fort et l'adresse haute stocke le contenu en octets de poids faible.
    b) Stockage petit-boutiste : l'adresse basse stocke le contenu de l'octet de poids faible et l'adresse haute stocke le contenu de l'octet de poids fort.
  14. Fonction
    Il y a trois éléments dans une fonction : fonction, paramètre et valeur de retour.
  15. Définition : Encapsuler un module de code avec une fonction spécifique dans une fonction (interface).
  16. Format de définition :
    [type de stockage] type de données nom de la fonction (paramètre formel)
    { corps de la fonction ; Renvoie une constante, une variable ou une expression ; } Remarque : a) Le type de données de la constante, de la variable ou de l'expression renvoyée doit être cohérent avec le type de données de la fonction . S'il n'y a pas de retour, le type de fonction est défini comme type vide et il n'y a pas d'instruction de retour dans la fonction. b) La fonction définie doit être appelée directement ou indirectement par la fonction principale pour réaliser la fonction. c) Si la fonction définie n'a pas besoin de passer des paramètres, le paramètre du prototype de la fonction est écrit comme vide. Si vous n'écrivez pas void et ne transmettez pas la valeur réelle du paramètre, aucune erreur ne sera signalée, mais cette valeur de paramètre occupera de l'espace ressource. Si cet espace est utilisé ultérieurement, une erreur se produira et il est facile de trouver la cause de l'erreur.






  17. Appel de fonction : nom de la fonction (paramètre réel)
  18. Déclaration de fonction : [type de stockage] nom de la fonction du type de données (paramètre) ;
    a) La déclaration de la fonction est au-dessus de la fonction principale et la déclaration peut omettre le nom de la variable du paramètre formel.
    b) Si le prototype de la fonction est défini au-dessus de la fonction principale, la déclaration peut être omise.
  19. La différence entre les paramètres formels et les paramètres réels
    a) Paramètres formels : Les paramètres formels sont des variables de paramètre formelles définies lors de la définition d'une fonction, qui sont des valeurs formellement existantes, et les appels de fonction ouvrent de l'espace mémoire.
    b) Paramètre réel : Le paramètre réel est la valeur passée lors de l'appel de la fonction, c'est la valeur réelle, et c'est l'espace mémoire ouvert pour le stockage.
  20. Passage de paramètre de fonction
  21. Transfert de valeur
    Copiez une copie de la valeur et transmettez-la à d'autres fonctions, modifiez le contenu copié et le contenu d'origine reste inchangé.
  22. Transfert d'adresse
    Passez l'adresse de la variable à d'autres fonctions et le contenu de l'élément peut être modifié via l'adresse.
  23. L'essence du transfert de tableau
    est également le transfert d'adresse, qui transfère la première adresse du tableau.
  24. Paramètres de ligne de commande
    int main(int argc, const char *argv[])
  25. argc : le nombre d'arguments de la ligne de commande
  26. argv : enregistrez le contenu des paramètres de la ligne de commande et enregistrez la première adresse de chaque paramètre.
  27. famille de fonctions de chaîne
  28. strlen(char *s)
    a) Fonction : calcule la longueur de la chaîne, excluant '\0' ;
    b) Paramètres : s : la première adresse de la chaîne à calculer ;
    c) Valeur de retour : la longueur de la chaîne
  29. La différence entre strlrn et sizeof
    a) strlen est une fonction et sizeof est un mot clé.
    b) strlen est de calculer la longueur du nombre réel de caractères dans la chaîne, à l'exclusion de '\0'
    c) sizeof est de calculer la taille de l'espace mémoire occupé, y compris '\0';
  30. strcpy (char *dest, char *src)
    a) Fonction : réalise la copie de la chaîne
    b) Paramètres : dest : emplacement de stockage de la chaîne copiée ; src : la chaîne à copier.
    c) Valeur de retour : la première adresse de la chaîne copiée.
  31. strcat (char *dest, char *src)
    a) Fonction : réaliser la concaténation des chaînes, supprimer le '\0' après dest puis concaténer.
    b) Paramètres : dest : l'emplacement de stockage de la chaîne à raccorder ; src : la chaîne à raccorder.
    c) Valeur de retour : la première adresse de la chaîne épissée.
  32. strcmp (char *s1, char *s2)
    a) Fonction : comparer la taille de deux chaînes de caractères, comparer par caractère, comparer le code ASCII des caractères.
    b) Paramètre : la première adresse des deux chaînes de caractères.
    c) Valeur de retour : s1>s2 renvoie un nombre positif ; s1<s2 renvoie un nombre négatif ; s1=s2 renvoie 0.

Je suppose que tu aimes

Origine blog.csdn.net/qq_47023150/article/details/123442917
conseillé
Classement