CS- Semaine 4

Dec 31, 2024 pm 06:24 PM

Pixels

Les

Les pixels sont les plus petits points colorés qui composent une image.
Si nous imaginons l'image comme composée de zéros et de uns, les zéros représentent le noir et les uns représentent le blanc :

CS- Week 4

RVB (Rouge, Vert, Bleu) sont des nombres représentant la quantité de chaque couleur. Dans Adobe Photoshop nous voyons ces paramètres :

CS- Week 4

Nous pouvons voir dans l'image ci-dessus comment la quantité sélectionnée de rouge, de vert et de bleu change la couleur. On peut également voir sur cette image que la couleur n'est pas représentée par seulement trois valeurs, mais par une valeur composée de nombres et de symboles spéciaux. Par exemple, la valeur 255 est représentée par FF.


Hexadécimal

Le

Le système de nombres hexadécimaux est un système de numérotation basé sur l'écriture de nombres utilisant seulement 16 caractères. Ils sont les suivants :

0 1 2 3 4 5 6 7 8 9 A B C D E F
Copier après la connexion
Copier après la connexion
Copier après la connexion

Dans le système numérique hexadécimal, chaque colonne représente 16 niveaux.
0 – 00 comme
1 – 01 comme
9 – comme 09
10 – comme 0A
15 – comme 0F
16 – 10 comme
255 est exprimé en FF car 16 x 15 (ou F) est égal à 240 plus 15 pour faire 255. Il s'agit du plus grand nombre à deux chiffres pouvant être représenté en hexadécimal.

Le système de nombres hexadécimaux permet d'exprimer les données sous une forme plus courte. Par conséquent, il est pratique d'exprimer les informations de manière plus compacte.


Mémoire

Si nous numérotons les blocs de mémoire en utilisant le système de numérotation hexadécimal, nous pouvons les imaginer comme suit :

CS- Week 4

Il peut être difficile de déterminer si le bloc 10 sur la figure représente un emplacement mémoire ou la valeur 10. Par conséquent, tous les nombres hexadécimaux sont généralement représentés par le préfixe 0x :

CS- Week 4

On attribue la valeur 50 à la variable entière n :

#include <stdio.h>

int main(void)
{
    int n = 50;
    printf("%i\n", n);
}
Copier après la connexion
Copier après la connexion
Copier après la connexion

La manière dont le programme stocke cette valeur en mémoire peut être visualisée comme suit :

CS- Week 4

Le langage C possède les opérateurs de manipulation de mémoire suivants :

  • & – Donne l'adresse d'une valeur en mémoire.
  • * – Indique au compilateur d'accéder à l'emplacement mémoire.

Si nous voulons connaître l'adresse mémoire de notre n apprenant, nous pouvons modifier notre code ci-dessus comme suit :

0 1 2 3 4 5 6 7 8 9 A B C D E F
Copier après la connexion
Copier après la connexion
Copier après la connexion

%p – vous permet de voir l'adresse d'un emplacement mémoire. Et &n renvoie l'adresse de la variable n en mémoire commençant par 0x lorsque nous exécutons le code.


Pointeurs

Pointeur est une variable qui stocke l'adresse de cette valeur dans la mémoire de l'ordinateur.

#include <stdio.h>

int main(void)
{
    int n = 50;
    printf("%i\n", n);
}
Copier après la connexion
Copier après la connexion
Copier après la connexion

Où p est un pointeur qui contient l'adresse d'un entier n.

CS- Week 4

Les pointeurs sont généralement stockés sous forme de valeurs de 8 octets. p stocke l'adresse de la valeur 50 dans l'image ci-dessus.
Nous pouvons considérer un pointeur comme une flèche pointant d'un emplacement de la mémoire à un autre :

CS- Week 4


Chaîne

String est simplement un tableau de caractères. Par exemple, la chaîne s = "HI!" peut être représentée dans la mémoire de l'ordinateur comme :

CS- Week 4

Un pointeur appelé

s indique au compilateur où se trouve le premier octet de la valeur donnée :

CS- Week 4

Nous pouvons créer une

variable chaîne comme suit :

#include <stdio.h>

int main(void)
{
    int n = 50;
    printf("%p\n", &n);
}
Copier après la connexion

Le code ci-dessus imprime un tableau de caractères commençant à la position s.


Comparaison de chaînes

Nous comparons les valeurs des variables de type

chaîne de données entre elles :

int n = 50;
int *p = &n;
Copier après la connexion

Dans notre code ci-dessus, nous donnons à nos variables s et t le même "Salut !" même si on donne la valeur "Différent", un message apparaît à l'écran en conséquence.
Pour savoir pourquoi cela se produit, nous pouvons donner la même valeur à nos variables s et t et les représenter dans la mémoire de l'ordinateur comme suit :

CS- Week 4

Le code ci-dessus essaie donc en fait de comparer les emplacements mémoire des variables s et t, pas leurs valeurs.


Copier

Donnons le code suivant :

#include <stdio.h>

int main(void)
{
    char *s = "HI!";
    printf("%s\n", s);
}
Copier après la connexion
Dans

string t = s, l'adresse de s est copiée dans t. Cela ne produit pas le résultat souhaité car la valeur n'est pas copiée - seule son adresse est copiée.

CS- Week 4

s et t pointent vers les mêmes blocs de mémoire. Nous ne pouvions pas copier sa valeur de s vers t, mais ils sont devenus deux pointeurs pointant vers une seule chaîne.

malloc - permet au programmeur d'allouer un bloc de mémoire d'une certaine taille.
libre – demande à l'ordinateur de libérer le bloc de mémoire précédemment alloué.
On change le code pour créer une vraie copie :

0 1 2 3 4 5 6 7 8 9 A B C D E F
Copier après la connexion
Copier après la connexion
Copier après la connexion

malloc(strlen(s) 1) - Ajoute un à la longueur de la variable s et alloue de l'espace pour son caractère. Ensuite, via la boucle for, les valeurs de s sont copiées dans t.


Valeurs des déchets

Si l'on demande au compilateur un bloc de mémoire, rien ne garantit que cette mémoire sera libre. La mémoire allouée peut avoir été utilisée par l'ordinateur auparavant, il est donc possible qu'il y ait des valeurs indésirables :

CS- Week 4

#include <stdio.h>

int main(void)
{
    int n = 50;
    printf("%i\n", n);
}
Copier après la connexion
Copier après la connexion
Copier après la connexion

Lorsque nous exécutons ce code, 1024 emplacements mémoire sont alloués au tableau, mais lorsque nous affichons les valeurs des éléments du tableau à l'aide d'une boucle for, nous voyons qu'ils ne sont pas tous 0.

Chaque fois que nous demandons à l'ordinateur d'allouer de la mémoire à une variable, il est recommandé de l'initialiser à 0 ou à une autre valeur.

Cet article utilise la source CS50x 2024.

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!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

Article chaud

Repo: Comment relancer ses coéquipiers
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Combien de temps faut-il pour battre Split Fiction?
3 Il y a quelques semaines By DDD
R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
1 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island Adventure: Comment obtenir des graines géantes
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌

Article chaud

Repo: Comment relancer ses coéquipiers
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Combien de temps faut-il pour battre Split Fiction?
3 Il y a quelques semaines By DDD
R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
1 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island Adventure: Comment obtenir des graines géantes
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌

Tags d'article chaud

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Quels sont les types de valeurs renvoyées par les fonctions du langage C? Qu'est-ce qui détermine la valeur de retour? Quels sont les types de valeurs renvoyées par les fonctions du langage C? Qu'est-ce qui détermine la valeur de retour? Mar 03, 2025 pm 05:52 PM

Quels sont les types de valeurs renvoyées par les fonctions du langage C? Qu'est-ce qui détermine la valeur de retour?

Gulc: Cibliothèque C construite à partir de zéro Gulc: Cibliothèque C construite à partir de zéro Mar 03, 2025 pm 05:46 PM

Gulc: Cibliothèque C construite à partir de zéro

C Fonction Langue Format de lettre ÉTAPES DE CONVERSION DE CAS C Fonction Langue Format de lettre ÉTAPES DE CONVERSION DE CAS Mar 03, 2025 pm 05:53 PM

C Fonction Langue Format de lettre ÉTAPES DE CONVERSION DE CAS

Quelles sont les définitions et les règles d'appel des fonctions du langage C et quelles sont les Quelles sont les définitions et les règles d'appel des fonctions du langage C et quelles sont les Mar 03, 2025 pm 05:53 PM

Quelles sont les définitions et les règles d'appel des fonctions du langage C et quelles sont les

Utilisation distincte et partage de phrases Utilisation distincte et partage de phrases Mar 03, 2025 pm 05:51 PM

Utilisation distincte et partage de phrases

Où est la valeur de retour de la fonction de langue C stockée en mémoire? Où est la valeur de retour de la fonction de langue C stockée en mémoire? Mar 03, 2025 pm 05:51 PM

Où est la valeur de retour de la fonction de langue C stockée en mémoire?

Comment fonctionne la bibliothèque de modèle standard C (STL)? Comment fonctionne la bibliothèque de modèle standard C (STL)? Mar 12, 2025 pm 04:50 PM

Comment fonctionne la bibliothèque de modèle standard C (STL)?

Comment utiliser efficacement les algorithmes du STL (trier, trouver, transformer, etc.)? Comment utiliser efficacement les algorithmes du STL (trier, trouver, transformer, etc.)? Mar 12, 2025 pm 04:52 PM

Comment utiliser efficacement les algorithmes du STL (trier, trouver, transformer, etc.)?

See all articles