Introduction à l'apprentissage informatique du sixième jour-mots-clés, pointeurs
Compilateur: Microsoft Visual Studio 2010
Enregistrez le blog d'apprentissage du langage C le sixième jour.
Un mot-clé commun
Focus sur les mots-clés:
typedef : comme son nom l'indique, il s'agit d'une définition de type, qui doit être comprise comme un renommage de type.
int main()
{
typedef unsigned int u_int;
unsigned int num1 = 20;
u_int num2 = 20;
return 0;
}
Parmi eux: unsigned int est défini comme u_int par typedef, et les deux significations sont exactement les mêmes.
static : Dans le langage C, static est utilisé pour modifier les variables et les fonctions
1, modifier les variables locales-variables locales statiques
void test()
{
int a = 1;
a++;
printf("a = %d\n",a);
}
int main()
{
int i = 0;
while (i<5)
{
test();
i++;
}
return 0;
}
La sortie est la suivante:
chaque fois que a est imprimé à partir de la fonction de test, il est détruit. Donc, à chaque fois, il commence la boucle avec 1.
Lorsque statique est utilisé,
void test()
{
static int a = 1;在这里使用 !! 是一个静态的局部变量
a++;
printf("a = %d\n",a);
}
int main()
{
int i = 0;
while (i<5)
{
test();
i++;
}
return 0;
}
Le résultat est le suivant:
chaque fois que a est imprimé à partir de la fonction de test, il n'est pas détruit, mais la valeur est enregistrée. Prolonge le cycle de vie des variables locales .
2. Modification des variables globales - changement de la portée des variables
Dans un autre fichier source, définissez static int, et utilisez extern dans un autre fichier source pour déclarer lorsqu'il est utilisé:
une erreur s'est produite:
Ceci peut être obtenu: les variables globales ne peuvent être utilisées qu'à l'intérieur du fichier source où elles se trouvent, et ne peuvent pas être utilisées en dehors du fichier source.
3. Fonction modifiée
Dans un autre fichier source, définissez la fonction statique int Add et utilisez extern dans un autre fichier source pour déclarer l'utilisation:
Une erreur s'est produite:
la fonction de modification statique modifie l'attribut de lien de la fonction, de l'attribut de lien externe à l'attribut de lien interne.
** # définir définir des constantes et des macros **
#define Définir la constante d'identifiant
Par exemple:
#define MAX 10000
int main()
{
int a = MAX;
return 0;
}
#define définit une macro avec des paramètres
Par exemple: #define ADD (x, y) ((x) + (y))
compare la taille de deux nombres dans une fonction
int MAX(int x , int y)
{
if (x > y)
return x;
else
return y;
}
int main ()
{
int a =20;
int b =30;
int z = MAX(a , b);
printf("Max=%d\n",z);
return 0;
}
Les résultats sont les suivants:
Comparez la taille de deux nombres avec une macro
#define MAX(X,Y) (X>Y?X:Y)
int main ()
{
int a =20;
int b =30;
int z = MAX(a , b); 会被替换成(a>b?a:b)
printf("Max=%d\n",z);
return 0;
}
Deuxièmement, le pointeur
1. Prenez l'opérateur d'adresse.
"&"
int main()
{
int a = 10;
printf("%p\n",&a);
return 0;
}
Il s'agit de l'adresse de a, en hexadécimal.
Puisque & a produit une adresse et une valeur, elle peut être stockée. C'est une variable de pointeur.
2. Les variables de pointeur
sont des variables utilisées pour stocker les adresses.
int * p: p est une variable, le type est int *
int main()
{
int a = 10;
int* p = &a;
printf("%p\n",&a);
printf("%p\n",p);
return 0;
}
La valeur de sortie est la même.
3. L'opérateur de déréférence
* p
déréférence p, trouve l'objet a pointé par p et le modifie.
int main()
{
int a = 10;
int* p = &a;
printf("%p\n",&a);
printf("%p\n",p);
*p = 20;
printf("%d\n",a);
return 0;
}
La valeur de a a été modifiée à 20.
``
La relation entre l'opérateur d'adresse, la variable de pointeur et l'opérateur de déréférencement:
int a = 10; Le type int s'applique à l'espace pour stocker "10" dans la mémoire et est nommé a.
& a est l'opérateur d'adresse, qui peut extraire l'adresse d'un. 0x0012ff40.
Int * p = & a; Stocke l'adresse de a dans la variable p, où p est une variable de pointeur.
* p est a, ce qui équivaut à changer a = 10 en a = 20.
4. La taille de la variable de pointeur
int main()
{
int a = 10;
int* p = &a;
printf("%d\n",sizeof(p));
return 0;
}
Le résultat de sortie est 4.
Par conséquent, la taille de la variable de pointeur est de 4 octets sous le système d'exploitation 32 bits.
Définissez la plate-forme de langage C sous un système d'exploitation
64 bits : 64 bits.
La taille de la variable de pointeur est de 8 octets sous le système d'exploitation 64 bits.
Connaissance informatique / connaissance du code (fragmentée)
1. L'ordinateur stocke les données:
plus la vitesse est élevée, plus la vitesse d'accès est rapide, plus la taille est petite et plus le coût est élevé.
Les données couramment utilisées sont classées et préchargées dans les registres, la mémoire cache et la mémoire en fonction de la fréquence d'utilisation.
Dirigez le registre des mots-clés:
int main()
{
register int a = 10;/建议把a定义成寄存器变量,a是否真的放在了寄存器里,取决于编译器的判断。
return 0;
}
2. Les variables définies par int sont signées. signé int équivaut à int.
unsigned int est défini comme unsigned, même si unsigned int = -10, il est considéré comme 10.
3. Mémoire: C'est une mémoire particulièrement importante sur l'ordinateur.Tous les programmes de l'ordinateur fonctionnent dans la mémoire.
Par conséquent, afin d'utiliser efficacement la mémoire, la mémoire est divisée en petites unités de mémoire et la taille de chaque unité de mémoire est de 1 octet.
Afin de pouvoir accéder efficacement à chaque unité de la mémoire, l'unité de mémoire est numérotée, et ces numéros sont appelés l'adresse de l'unité de mémoire