Home Blog Page 21966

Les Bases de la Programmation en C

0

Les Fichiers Binaires

Les fichiers binaires sont très semblables à des tableaux de structures, à l’exception de la structures sont dans un fichier de disque plutôt que dans un tableau en mémoire. Parce que les structures dans un fichier binaire sont sur le disque, vous pouvez créer de très grandes collections d’entre eux (limité uniquement par l’espace disque disponible). Ils sont aussi permanents et toujours disponible. Le seul inconvénient est la lenteur qui vient de temps d’accès au disque.

Les fichiers binaires ont deux caractéristiques qui les distinguent des fichiers texte:

Jusqu’À La Prochaine

  • Comment JavaScript travail et comment puis-je construire calculatrices simples avec elle?
  • Comment La Programmation En C Fonctionne
  • Comment HTML5 Fonctionne
  • Quels sont les avantages de l’apprentissage de la programmation en C?
  • Sont d’exploration de données et le stockage des données liées?
  • Vous pouvez sauter instantanément à toute structure dans le fichier, ce qui fournit à accès aléatoire, comme dans un tableau.
  • Vous pouvez modifier le contenu d’une structure de n’importe où dans le fichier à tout moment.

Les fichiers binaires sont généralement plus rapide d’écrire et de lire des fois que des fichiers texte, car une image binaire de l’enregistrement est stocké directement à partir de la mémoire à disque (ou vice versa). Dans un fichier texte, tout doit être converti avant en arrière pour le texte, et cela prend du temps.

C prend en charge le fichier de structures concept très proprement. Une fois que vous ouvrez le fichier, vous pouvez lire une structure, d’écrire une structure, ou de chercher à n’importe quelle structure dans le fichier. Ce fichier concept prend en charge la notion de pointeur de fichier. Lorsque le fichier est ouvert, le pointeur d’enregistrement de 0 (le premier enregistrement dans le fichier). Toute opération de lecture lit le actuellement pointée à la structure et déplace le pointeur vers le bas d’une seule structure. Toute opération d’écriture écrit à la actuellement pointée à la structure et déplace le pointeur vers le bas d’une seule structure. Chercher déplace le pointeur de l’enregistrement demandé.

Gardez à l’esprit que C pense de tout dans le fichier de disque de blocs d’octets lus à partir de la disquette dans la mémoire ou de la lecture de la mémoire sur le disque. C utilise un pointeur de fichier, mais il peut pointer vers n’importe quel octet emplacement dans le fichier. Par conséquent, vous devez garder une trace des choses.

Le programme suivant illustre ces concepts:

#include <stdio.h>

/* enregistrement aléatoire description – pourrait être quelque chose */
struct rec
{
int x,y,z;
};

/* écrit et lit les 10 arbitraire des dossiers
à partir du dossier “indésirable”. */
int main()
{
int i,j;
FILE *f;
struct rec r;

/* création du fichier de 10 dossiers */
f=fopen(“junk”,”w”);
if (!f)
return 1;
for (i=1;i<=10; i++)
{
r.x=i;
fwrite(&r,sizeof(struct rec),1,f);
}
fclose(f);

/* lecture de l’10 dossiers */
f=fopen(“junk”,”r”);
if (!f)
return 1;
for (i=1;i<=10; i++)
{
fread(&r,sizeof(struct rec),1,f);
printf(“%dn”,r.x);
}
fclose(f);
printf(“n”);

/* utiliser fseek pour lire les 10 enregistrements
dans l’ordre inverse */
f=fopen(“junk”,”r”);
if (!f)
return 1;
for (i=9; i>=0; i–)
{
fseek(f,sizeof(struct rec)*i,SEEK_SET);
fread(&r,sizeof(struct rec),1,f);
printf(“%dn”,r.x);
}
fclose(f);
printf(“n”);

/* utiliser fseek pour lire tous les autres disques */
f=fopen(“junk”,”r”);
if (!f)
return 1;
fseek(f,0,SEEK_SET);
for (i=0;i<5; i++)
{
fread(&r,sizeof(struct rec),1,f);
printf(“%dn”,r.x);
fseek(f,sizeof(struct rec),SEEK_CUR);
}
fclose(f);
printf(“n”);

/* utiliser fseek pour lire la 4ème record,
le modifier, et de l’écrire */
f=fopen(“junk”,”r+”);
if (!f)
return 1;
fseek(f,sizeof(struct rec)*3,SEEK_SET);
fread(&r,sizeof(struct rec),1,f);
r.x=100;
fseek(f,sizeof(struct rec)*3,SEEK_SET);
fwrite(&r,sizeof(struct rec),1,f);
fclose(f);
printf(“n”);

/* lecture de l’10 enregistrements pour assurer
4ème enregistrement a été modifié */
f=fopen(“junk”,”r”);
if (!f)
return 1;
for (i=1;i<=10; i++)
{
fread(&r,sizeof(struct rec),1,f);
printf(“%dn”,r.x);
}
fclose(f);
return 0;
}

Dans ce programme, une description de la structure du rec a été utilisé, mais vous pouvez utiliser n’importe quelle description de la structure que vous souhaitez. Vous pouvez voir que fopen et fclose fonctionnent exactement comme ils l’ont fait pour les fichiers texte.

Les nouvelles fonctions sont ici fread, fwrite et fseek. La fonction fread prend quatre paramètres:

  • Une adresse de mémoire
  • Le nombre d’octets à lire par bloc
  • Le nombre de blocs à lire
  • La variable fichier

Ainsi, la ligne fread(&r,sizeof(struct rec),1,f); dit de lire 12 octets (la taille de rec) à partir du fichier f (à partir de l’emplacement actuel du pointeur de fichier) dans la mémoire de l’adresse &r. Un bloc de 12 octets est demandé. Il serait tout aussi facile à lire 100 pâtés de maisons de disque dans un tableau en mémoire en changeant de 1 à 100.

Le fwrite fonctionne de la même façon, mais se déplace le bloc d’octets de la mémoire dans le fichier. Le fseek fonction déplace le pointeur de fichier à un octet dans le fichier. Généralement, vous déplacez le pointeur dans sizeof(struct rec) par incréments de garder le pointeur sur l’enregistrement des frontières. Vous pouvez utiliser trois options lors de la recherche:

  • SEEK_SET
  • SEEK_CUR
  • SEEK_END

SEEK_SET déplace le pointeur de x octets vers le bas à partir du début du fichier (à partir de l’octet 0 dans le fichier). SEEK_CUR déplace le pointeur de x octets vers le bas à partir de la position actuelle du pointeur. SEEK_END déplace le pointeur à partir de la fin du fichier (si vous devez utiliser des décalages négatifs avec cette option).

Plusieurs options apparaissent dans le code ci-dessus. En particulier, la note de la section où le fichier est ouvert avec r+ mode. Cela ouvre le fichier pour la lecture et l’écriture, qui permet d’enregistrements à être changé. Le code vise à un enregistrement, il la lit, et les variations d’un champ; il cherche ensuite parce que la lecture a déplacé le pointeur, et écrit le changer en arrière.

Pour plus d’informations sur C et sur des sujets connexes, consultez les liens sur la page suivante.

Les Bases de la Programmation en C

0

Arguments De Ligne De Commande

C fournit une assez mécanisme simple pour la récupération des paramètres de ligne de commande entrée par l’utilisateur. Il passe un argv paramètre à la fonction principale du programme. argv structures apparaissent dans un bon nombre de la plus avancée des appels de bibliothèques, de sorte que la compréhension est utile à tout programmeur C.

Entrez le code suivant et de le compiler:

Jusqu’À La Prochaine

  • Comment JavaScript travail et comment puis-je construire calculatrices simples avec elle?
  • Comment La Programmation En C Fonctionne
  • Comment HTML5 Fonctionne
  • Quels sont les avantages de l’apprentissage de la programmation en C?
  • Sont d’exploration de données et le stockage des données liées?

#include <stdio.h>

int main(int argc, char *argv[])
{
int x;

printf(“%dn”,argc);
for (x=0; x<argc; x++)
printf(“%sn”,argv);
return 0;
}

Dans ce code, le programme principal accepte deux paramètres, argv et argc. Le paramètre argv est un tableau de pointeurs de chaîne de caractères qui contient les paramètres entrés lorsque le programme a été appelée à la ligne de commande UNIX. L’entier argc contient le nombre de paramètres. Ce morceau particulier de types de code les paramètres de ligne de commande. Pour essayer cela, compiler le code d’un fichier exécutable nommé aaa et le type aaa xxx yyy zzz. Le code d’impression les paramètres de ligne de commande xxx, yyy et zzz, un par ligne.

Le char *argv[] ligne est un tableau de pointeurs de chaîne. En d’autres termes, chaque élément du tableau est un pointeur, et chaque pointeur pointe vers une chaîne de caractères (techniquement, le premier caractère de la chaîne). Ainsi, argv[0] pointe vers une chaîne qui contient le premier paramètre sur la ligne de commande (le nom du programme), argv[1] pointe vers le paramètre suivant, et ainsi de suite. La variable argc vous indique le nombre de pointeurs dans le tableau sont valables. Vous constaterez que le code précédent ne fait rien de plus que d’imprimer chacune des chaînes valides pointé par argv.

Parce que argv existe, vous pouvez laisser votre programme de réagir à des paramètres de ligne de commande entrée par l’utilisateur assez facilement. Par exemple, vous pourriez avoir votre programme de détecter le mot de l’aide en tant que premier paramètre suivant le nom du programme et le dump d’un fichier d’aide sur la sortie standard stdout. Les noms de fichiers peuvent également être transmis et utilisé dans votre fopen consolidés.

Les Bases de la Programmation en C

0

La Priorité De L’Opérateur

C contient de nombreux opérateurs, et en raison de la façon dont la priorité de l’opérateur œuvres, les interactions entre plusieurs opérateurs peuvent devenir source de confusion.

x=5+3*6;

Jusqu’À La Prochaine

  • Comment JavaScript travail et comment puis-je construire calculatrices simples avec elle?
  • Comment La Programmation En C Fonctionne
  • Comment HTML5 Fonctionne
  • Quels sont les avantages de l’apprentissage de la programmation en C?
  • Sont d’exploration de données et le stockage des données liées?

X reçoit la valeur 23, pas 48, parce que C la multiplication et la division sont prioritaires sur ceux de l’addition et de la soustraction.

char *a[10];

Est un un seul pointeur vers un tableau de 10 caractères, ou est-il un tableau de 10 pointeurs de caractères? Sauf si vous connaissez la priorité des conventions en C, il n’y a aucun moyen de savoir. De même, dans E. 11 nous avons vu qu’en raison de la priorité des déclarations telles que *p.i = 10; ne fonctionnent pas. Au lieu de cela, la forme (*p).i = 10; doit être utilisé à force de corriger la priorité.

Le tableau suivant de Langage de Programmation C, par Kernighan et Ritchie, montre l’ordre de priorité de la hiérarchie dans C. La ligne supérieure a la priorité la plus élevée.

L’Associativité Des Opérateurs
( [ – . De gauche à droite
! – ++ -{- + * & (type-cast) sizeof Droite à gauche
(dans la ligne ci-dessus, +, – et * unaire formes)
* / % Gauche à droite
+ – De gauche à droite
<< >> De gauche à droite
< <= > >= De gauche à droite
== != De gauche à droite
Et de gauche à droite
^ De gauche à droite
| De gauche à droite
&& De gauche à droite
|| De gauche à droite
?: De gauche à droite
= += -= *= /= %= &= ^= |= <<= >>= De droite à gauche
, De gauche à droite

À l’aide de ce tableau, vous pouvez voir que char *a[10]; est un tableau de 10 pointeurs de caractères. Vous pouvez aussi voir pourquoi les parenthèses sont obligatoires si (*p).je doit être gérée correctement. Après un peu de pratique, vous permettra de mémoriser le plus de cette table, mais chaque maintenant et encore quelque chose ne fonctionnera pas parce que vous avez été pris par un subtil préséance problème.

Les Bases de la Programmation en C

0

Remarque spéciale sur les Chaînes de

Remarque spéciale sur les Constantes de Chaîne

Supposons que vous créez deux fragments de code et de les exécuter:

Fragment 1

{
char *s;

s=”bonjour”;
printf(“%sn”,s);
}

Fragment 2

{
char s[100];

strcpy(s,”bonjour”);
printf(“%sn”,s);
}

Ces deux fragments donnent le même résultat, mais son comportement est tout à fait différent. Dans le fragment 2, vous ne pouvez pas dire s=”bonjour”;. Pour comprendre les différences, vous devez comprendre comment la chaîne de table de constantes travaille en C.

Jusqu’À La Prochaine

  • Comment JavaScript travail et comment puis-je construire calculatrices simples avec elle?
  • Comment La Programmation En C Fonctionne
  • Comment HTML5 Fonctionne
  • Quels sont les avantages de l’apprentissage de la programmation en C?
  • Sont d’exploration de données et le stockage des données liées?

Lorsque votre programme est compilé, le compilateur fait l’objet, le fichier de code, qui contient votre code machine et une table de l’ensemble de la chaîne des constantes déclarées dans le programme. Dans le fragment 1, l’état s=”bonjour”; causes s pour pointer vers l’adresse de la chaîne bonjour dans la chaîne de caractères constante de la table. Depuis cette chaîne est la chaîne de caractères constante de la table, et donc techniquement une partie du code exécutable, vous ne pouvez pas le modifier. Vous ne pouvez pointer et de l’utiliser en lecture seule.

Dans le fragment 2, la chaîne bonjour , existe aussi dans la table de constantes, de sorte que vous pouvez le copier dans le tableau de caractères nommée s. Puisque s n’est pas un pointeur, l’état s=”bonjour”; ne fonctionnera pas dans le fragment 2. Il ne sera même pas compiler.

Note spéciale sur l’Utilisation des Chaînes de caractères avec la fonction malloc

Supposons que vous écrivez le programme suivant:

int main()
{
char *s;

s=(char *) malloc (100);
s=”bonjour”;
libre(s);
return 0;
}

Il compile correctement, mais donne une erreur de segmentation lors de la gratuit ligne lorsque vous l’exécutez. Le malloc ligne alloue un bloc de 100 octets de long et de points de s, mais maintenant la s=”bonjour”; ligne est un problème. Il est syntaxiquement correct, car la s est un pointeur; toutefois, lorsque s=”bonjour”; est exécuté, s points de la chaîne dans la chaîne de caractères constante de la table et le bloc alloué est orphelin. Puisque s est pointé dans la chaîne de caractères constante de la table, la chaîne ne peut pas être modifié; gratuit échoue parce qu’il ne peut pas libérer un bloc dans un fichier exécutable région.

Le code qui suit:

int main()
{
char *s;
s=(char *) malloc (100);
strcpy(s,”bonjour”);
libre(s);
return 0;
}

Essayez Ceci!

  • Créer un programme qui lit une chaîne de caractères contenant un prénom suivi par un vide suivi par un nom de famille. Écrire des fonctions pour supprimer tous les premiers ou les espaces à droite. Écrire une fonction qui renvoie le nom de famille.
  • Écrire une fonction qui convertit une chaîne en majuscules.
  • Écrire une fonction qui récupère le premier mot d’une chaîne de caractères et renvoie le reste de la chaîne.

C les Erreurs à Éviter

Perdre le de caractère, ce qui est facile si vous n’êtes pas prudent, peut conduire à des bogues subtils. Assurez-vous de copier lorsque vous copiez des chaînes de caractères. Si vous créez une nouvelle chaîne, assurez-vous de mettre . Et si vous copiez une chaîne à l’autre, assurez-vous que la chaîne de réception est assez grand pour contenir la chaîne source, y compris le . Enfin, si vous pointez un pointeur de caractère de certains personnages, assurez-vous qu’ils se terminer par .

Les Bases de la Programmation en C

0

Les chaînes

HowStuffWorks.com

Chaînes de caractères en C entrelacés avec des pointeurs dans une large mesure. Vous devez vous familiariser avec le pointeur de concepts abordés dans les précédents articles à utiliser des chaînes C efficacement. Une fois que vous vous habituez à eux, cependant, vous pouvez souvent d’effectuer les manipulations de chaînes de manière très efficace.

Une chaîne de caractères en C est tout simplement un tableau de caractères. La ligne suivante déclare un tableau qui peut contenir une chaîne de jusqu’à 99 caractères.

Jusqu’À La Prochaine

  • Comment JavaScript travail et comment puis-je construire calculatrices simples avec elle?
  • Comment La Programmation En C Fonctionne
  • Comment HTML5 Fonctionne
  • Quels sont les avantages de l’apprentissage de la programmation en C?
  • Sont d’exploration de données et le stockage des données liées?

char str[100];

Il détient les caractères que vous attendez: str[0] est le premier caractère de la chaîne, str[1] est le deuxième caractère, et ainsi de suite. Mais pourquoi est-a-100 élément de tableau est incapable de tenir jusqu’à 100 caractères? Parce que C utilise null chaînes, ce qui signifie que la fin de n’importe quelle chaîne est marquée par la valeur ASCII 0 (le caractère null), qui est également représenté dans C ‘’.

De fin Null est très différent de la façon dont beaucoup d’autres langues de gérer les chaînes. Par exemple, dans Pascal, chaque chaîne est constituée d’un tableau de caractères, avec une longueur d’un octet qui conserve le nombre de le nombre de caractères stockés dans le tableau. Cette structure donne à Pascal un avantage certain lorsque vous demandez la longueur d’une chaîne. Pascal suffit de retourner la longueur en octets, alors que C compte le nombre de caractères jusqu’à ce qu’il trouve ‘’. Ce fait rend C beaucoup plus lent que Pascal, dans certains cas, mais dans d’autres, il le rend plus rapide, comme nous allons le voir dans les exemples ci-dessous.

Parce que le C ne fournit aucun soutien explicite des chaînes dans la langue elle-même, l’ensemble de la chaîne de fonctions de gestion sont mis en œuvre dans les bibliothèques. La chaîne I/0 (get, put, et ainsi de suite) sont mis en œuvre dans <stdio.h>, et un ensemble assez simple fonctions de manipulation de chaîne sont mis en œuvre dans <string.h> (sur certains systèmes, <cordes.h> ).

Le fait que les chaînes ne sont pas natifs de C vous oblige à créer assez rond-point de code. Par exemple, supposons que vous souhaitez affecter une chaîne à une autre chaîne; c’est, vous voulez copier le contenu d’une chaîne à l’autre. En C, comme nous l’avons vu dans l’article précédent, vous ne pouvez pas simplement affecter un tableau à un autre. Vous devez copier l’élément par élément. La chaîne de la bibliothèque (<chaîne de caractères.h> ou <cordes.h> ) contient une fonction appelée fonction strcpy pour cette tâche. Voici un exemple très commun morceau de code à trouver dans un programme C:

char s[100];
strcpy(s, “bonjour”);

Après ces deux lignes exécuter, le diagramme suivant montre le contenu de s:

Le schéma du haut montre le tableau avec ses personnages. Le diagramme du bas montre les valeurs de code ASCII équivalent pour les caractères, et comment C fait pense au sujet de la chaîne (comme un tableau d’octets contenant des valeurs entières). Voir Comment les Bits et les Octets de Travail pour une discussion des codes ASCII.

Le code suivant montre comment utiliser la fonction strcpy dans C:

#include <string.h>
int main()
{
char s1[100],s2[100];
strcpy(s1,”bonjour”); /* copie “bonjour” en s1 */
strcpy(s2,s1); /* copie de s1 dans s2 */
return 0;
}

strcpy est utilisée chaque fois qu’une chaîne est initialisée en C. Vous utilisez le strcmp fonction dans la chaîne de la bibliothèque de comparer deux chaînes de caractères. Il retourne un entier qui indique le résultat de la comparaison. Zéro signifie que les deux chaînes sont égales, une valeur négative signifie que s1 est inférieur à s2, et une valeur positive signifie s1 est supérieure à s2.

#include <stdio.h>
#include <string.h>
int main()
{
char s1[100],s2[100];
gets(s1);
gets(s2);
if (strcmp(s1,s2)==0)
printf(“l’égalitén”);
else if (strcmp(s1,s2)<0)
printf(“s1 moins de s2n”);
d’autre
printf(“s1 supérieure à s2n”);
return 0;
}

Les autres fonctions courantes dans la chaîne de la bibliothèque comprennent strlen (), qui retourne la longueur d’une chaîne, et strcat qui concatène deux chaînes. La chaîne de la bibliothèque contient un certain nombre d’autres fonctions, dont vous pouvez consulter la lecture de la page de man.

Pour vous obtenir a commencé la construction de fonctions de chaîne, et pour vous aider à comprendre d’autres programmeurs code (tout le monde semble avoir son propre ensemble de fonctions de chaînes de caractères à des fins spéciales dans un programme), nous nous pencherons sur deux exemples, strlen () et la fonction strcpy. La suite est strictement Pascal-comme la version de strlen:

int strlen(char s[])
{
int x;
x=0;
while (s != ‘’)
x=x+1;
return(x);
}

La plupart des programmeurs C shun cette approche, car il semble inefficace. Au lieu de cela, ils utilisent souvent un pointeur approche basée sur:

int strlen(char *s)
{
int x=0;
while (*p != ‘’)
{
x++;
s++;
}
return(x);
}

Vous pouvez abréger ce code à la suivante:

int strlen(char *s)
{
int x=0;
while (*s++)
x++;
return(x);
}

J’imagine un vrai C expert pourrait rendre ce code encore plus courte.

Quand je compile ces trois morceaux de code sur un MicroVAX avec gcc, à l’aide de l’optimisation, et d’exécuter à chaque fois 20 000 à 120-chaîne de caractères, le premier morceau de code donne un temps de 12,3 secondes, la deuxième 12.3 secondes, et le troisième 12.9 secondes. Qu’est-ce que cela signifie? Pour moi, cela signifie que vous devez écrire le code quelque soit le moyen le plus facile pour vous de comprendre. Les pointeurs généralement d’obtenir plus rapidement le code, mais le strlen code ci-dessus montre que ce n’est pas toujours le cas.

Nous pouvons suivre la même évolution avec strcpy:

strcpy(char s1[],char s2[])
{
int x;
for (x=0; x<=strlen(s2); x++)
s1=s2;
}

Notez qu’ici <= est important dans la pour la boucle parce que le code puis copie le ‘’. Assurez-vous de copier ‘’. Bugs majeurs se produisent plus tard si vous le laisser il dehors, parce que la chaîne n’a pas de fin et donc une longueur inconnue. Notez également que ce code est très inefficace, car strlen () est appelée chaque fois à la pour la boucle. Pour résoudre ce problème, vous pouvez utiliser le code suivant:

strcpy(char s1[],char s2[])
{
int x,len;
len=strlen(s2);
for (x=0; x<=len; x++)
s1=s2;
}

Le pointeur de la version est similaire.

strcpy(char *s1,char *s2)
{
while (*s2 != ‘’)
{
*s1 = *s2;
s1++;
s2++;
}
}

Vous pouvez compresser ce code:

strcpy(char *s1,char *s2)
{
while (*s2)
*s1++ = *s2++;
}

Si vous le souhaitez, vous pouvez même dire while (*s1++ = *s2++);. La première version de la fonction strcpy prend 415 secondes pour copier un 120-chaîne de caractères de 10 000 fois, la deuxième version prend en 14.5 secondes, la troisième version 9.8 secondes, et la quatrième 10,3 secondes. Comme vous pouvez le voir, les pointeurs de fournir un gain de performances significatif ici.

Le prototype de la fonction strcpy fonction dans la chaîne de la bibliothèque indique qu’il est conçu pour renvoyer un pointeur vers une chaîne de caractères:

char *strcpy(char *s1,char *s2)

La plupart de la chaîne de fonctions renvoient un pointeur de chaîne comme un résultat, et strcpy renvoie la valeur de s1 que son résultat.

En utilisant des pointeurs avec des cordes peut parfois aboutir à des améliorations concrètes dans la vitesse et vous pouvez profiter de ces si vous y réfléchissez un peu. Par exemple, supposons que vous souhaitez retirer le premier des blancs à partir d’une chaîne. Vous pourriez être enclin à déplacer les personnages sur le dessus des flans pour les supprimer. En C, vous pouvez éviter la circulation tout à fait:

#include <stdio.h>
#include <string.h>

int main()
{
char s[100],*p;
gets(s);
p=s;
while (*p==’ ‘)
p++;
printf(“%sn”,p);
return 0;
}

C’est beaucoup plus rapide que la technique de mouvement, en particulier pour de longues chaînes.

Vous permettra de ramasser beaucoup d’autres trucs avec des chaînes comme vous allez le long et à lire d’autres code. La pratique est la clé.

Les Bases de la Programmation en C

0

En utilisant des Pointeurs avec les Tableaux

Les tableaux et les pointeurs sont intimement liés à la C. utilisation des tableaux de manière efficace, vous devez savoir comment utiliser les pointeurs avec eux. La compréhension de la relation entre les deux probablement besoin de plusieurs jours de recherche et d’expérimentation, mais il vaut bien l’effort.

Commençons par un exemple simple de tableaux en C:

Jusqu’À La Prochaine

  • Comment JavaScript travail et comment puis-je construire calculatrices simples avec elle?
  • Comment La Programmation En C Fonctionne
  • Comment HTML5 Fonctionne
  • Quels sont les avantages de l’apprentissage de la programmation en C?
  • Sont d’exploration de données et le stockage des données liées?

#define MAX 10

int main()
{
int a;
int b;
int i;
for(i=0; i<MAX; i++)
a=i;
b=a;
return 0;
}

Entrez ce code et essayer de le compiler. Vous trouverez que C pas compiler. Si vous souhaitez copier un en b, vous devez entrer quelque chose comme ce qui suit:

for (i=0; i<MAX; i++)
b=a;

Ou, pour le dire plus brièvement:

for (i=0; i<MAX; b=a, i++);

Mieux encore, utilisez le memcpy utilité dans la chaîne.h.

Les tableaux en C sont inhabituelles en ce que les variables a et b ne sont pas, techniquement, les tableaux eux-mêmes. Au lieu de cela, ils sont permanents pointeurs de tableaux. a et b définitivement point aux premiers éléments de leurs tableaux — ils détiennent les adresses de a[0] et b[0] , respectivement. Depuis qu’ils sont permanents pointeurs vous ne pouvez pas changer leurs adresses. L’instruction a=b; donc ne fonctionne pas.

Parce que a et b sont des pointeurs, vous pouvez faire plusieurs choses intéressantes avec les pointeurs et les tableaux. Par exemple, le code suivant fonctionne:

#define MAX 10

void main()
{
int a;
int i;
int *p;

p=a;
for(i=0; i<MAX; i++)
a=i;
printf(“%dn”,*p);
}

L’état des variables juste avant la boucle for commence à s’exécuter.

HowStuffWorks.com

L’instruction p=a; fonctionne car un est un pointeur. Techniquement, un des points à l’adresse de l’0e élément du tableau réel. Cet élément est un entier, donc un est un pointeur vers un entier. Par conséquent, la déclaration p comme un pointeur vers un entier et la valeur égale à un travaux de. Une autre façon de dire exactement la même chose serait de remplacer p=a; avec p=&a[0];. Depuis un contient l’adresse de a[0], a et &a[0] signifient la même chose.

Maintenant que p pointe à l’0e élément de l’ un, vous pouvez faire des choses étranges. La une variable est une donnée permanente de pointeur et ne peut pas être changé, mais p n’est pas soumis à de telles restrictions. C en fait vous encourage à le déplacer à l’aide de l’arithmétique des pointeurs . Par exemple, si vous dites p++;, le compilateur sait que p pointe vers un entier, si cette déclaration incréments de p le nombre d’octets approprié pour passer à l’élément suivant du tableau. Si p ont été pointant vers un tableau de 100 octets de long structures, p++; déplacerait p plus de 100 octets. C prend soin des détails de taille de l’élément.

Vous pouvez copier le tableau a en b à l’aide de pointeurs. Le code suivant peut remplacer (pour i=0; i<MAX; a=b, i++); :

p=a;
q=b;
for (i=0; i<MAX; i++)
{
*q = *p;
q++;
p++;
}

Vous pouvez abréger ce code comme suit:

p=a;
q=b;
for (i=0; i<MAX; i++)
*q++ = *p++;

Et vous pouvez continuer à abréger:

pour (p=, q=b,i=0; i<MAX; *q++ = *p++, i++);

Que faire si vous allez au-delà de la fin du tableau a ou b avec les pointeurs p ou q? C n’a pas de soins — il va allègrement le long de l’incrémentation de p et q, la copie de loin sur les autres variables à l’aide d’abandonner. Vous devez être prudent lors de l’indexation dans les tableaux en C, car C suppose que vous savez ce que vous faites.

Vous pouvez passer un tableau comme un ou de b d’une fonction de deux manières différentes. Imaginez une fonction de vidage qui accepte un tableau d’entiers en paramètre et affiche le contenu du tableau sur la sortie standard stdout. Il y a deux façons de code dump:

void copie(int a[],int nia)
{
int i;
for (i=0; i<nia; i++)
printf(“%dn”,a);
}

ou:

void copie(int *p,int nia)
{
int i;
for (i=0; i<nia; i++)
printf(“%dn”,*p++);
}

Le nia (number_in_array) de la variable est nécessaire, de sorte que la taille de la matrice est connue. Notez que seulement un pointeur vers le tableau, plutôt que sur le contenu de la matrice, est passé à la fonction. Notez également que les fonctions C peut accepter un tableau de taille variable en tant que paramètres.

Wie Ethernet Funktioniert

0

Ethernet-Grundlagen

Ethernet ist eine LAN-Technologie, bei Netzwerken, die traditionell innerhalb eines einzigen Gebäudes, den Anschluss von Geräten in der Nähe. Bei den meisten Ethernet-Geräte haben könnte, nur ein paar hundert Meter Kabel zwischen Ihnen, so dass es unmöglich ist die Verbindung von geografisch verteilten Standorten. Moderne Weiterentwicklungen erhöht haben, diese Entfernungen erheblich, so dass Ethernet-Netzwerke, die sich über Dutzende von Kilometern.

Protokolle

In Vernetzung, der Begriff Protokoll bezieht sich auf einen Satz von Regeln für die Kommunikation. Protokolle sind für Computer das, was Sprache für den Menschen. Da dieser Artikel in Englisch, Sie zu verstehen, müssen Sie in der Lage sein, Englisch zu Lesen. Ebenso für zwei Geräte auf ein Netzwerk, um erfolgreich zu kommunizieren, müssen Sie beide verstehen die gleichen Protokolle.

Bis Nächsten

  • Was sind die drei Arten von VPN?
  • Was Sie brauchen, um zu bauen ein eigenes WLAN-Netzwerk?
  • Was ist ein Netzwerk-server?
  • Wie Wählen Sie die Richtige E-mail-Server
  • Wie VPNs Funktionieren

Wie Ethernet Funktioniert

0

Die Ethernet –

1973 am Xerox Corporation Palo Alto Research Center (besser bekannt als PARC), Forscher Bob Metcalfe entwickelt und getestet, die erste Ethernet-Netzwerk. Während der Arbeit auf eine Weise zu verknüpfen, Xerox “Alto” – computer an einen Drucker, Metcalfe entwickelt, die physikalische Methode der Verkabelung, dass die angeschlossenen Geräte über die Ethernet-sowie die standards, unterliegt die Kommunikation auf dem Kabel. Ethernet hat sich seitdem zu den beliebtesten und am häufigsten eingesetzten Netzwerk-Technologie in der Welt. Viele der Probleme, die mit Ethernet sind für viele Netzwerk-Technologien und verstehen, wie Ethernet adressiert diese Probleme kann eine Stiftung, die verbessern Sie Ihr Verständnis für die Vernetzung im Allgemeinen.

Der Ethernet standard hat sich zu umfassen neue Technologien, wie computer-Vernetzung ist gereift, aber die mechanik der Betrieb für alle Ethernet-Netzwerk heute stammen von Metcalfe ‘ s original-design. Die original-Ethernet beschrieben, die Kommunikation über ein einziges Kabel teilen sich alle Geräte im Netzwerk. Sobald ein Gerät an diesem Kabel, es hatte die Fähigkeit zu kommunizieren, mit jedem anderen angeschlossenen Gerät. Dies ermöglicht es, das Netzwerk zu erweitern, um Platz für neue Geräte, ohne jegliche Veränderung, um diese Geräte bereits über das Netzwerk.

Bis Nächsten

  • Was sind die drei Arten von VPN?
  • Was Sie brauchen, um zu bauen ein eigenes WLAN-Netzwerk?
  • Was ist ein Netzwerk-server?
  • Wie Wählen Sie die Richtige E-mail-Server
  • Wie VPNs Funktionieren

Wie Ethernet Funktioniert

0

Lokales vs. Wide Area

Wir können klassifizieren, Netzwerk-Technologien, wie die Zugehörigkeit zu einer von zwei Gruppen. Local area network (LAN) – Technologien verbinden Sie viele Geräte, die sind relativ nah beieinander, in der Regel im gleichen Gebäude. Die Bibliothek terminals, display book information würde die Verbindung über ein lokales Netzwerk. Wide area network (WAN) – Technologien verbinden und eine kleinere Zahl von Geräten, die viele Kilometer auseinander. Zum Beispiel, wenn zwei Bibliotheken, die an den entgegengesetzten enden der Stadt teilen wollte, Ihre Buch-Katalog-Informationen, würden Sie wahrscheinlich machen Verwendung von einem wide area network-Technologie, die eine Standleitung gepachtet von der lokalen Telefongesellschaft, die ausschliesslich tragen Ihre Daten.

Im Vergleich zu WANs, LANs sind schneller und zuverlässiger, aber Verbesserungen in der Technologie weiter zu verwischen die Linie der Abgrenzung. LWL-Kabel haben, erlaubt LAN-Technologien zum verbinden von Geräten zig Kilometer voneinander entfernt, während zur gleichen Zeit, erheblich verbessert die Geschwindigkeit und Zuverlässigkeit von WANs.

Bis Nächsten

  • Was sind die drei Arten von VPN?
  • Was Sie brauchen, um zu bauen ein eigenes WLAN-Netzwerk?
  • Was ist ein Netzwerk-server?
  • Wie Wählen Sie die Richtige E-mail-Server
  • Wie VPNs Funktionieren

Wie Ethernet Funktioniert

0

Warum Netzwerk?

Die Vernetzung ermöglicht es einem computer, um Informationen zu senden und zu empfangen Informationen von anderen. Wir können nicht immer bewusst sein, der zahlreiche Male haben wir Zugriff auf Informationen über computer-Netzwerke. Sicherlich, das Internet ist der sinnfälligste Beispiel computer-Netzwerke, verbindet Millionen von Computern auf der ganzen Welt, aber kleineren Netzwerken eine Rolle spielen, Zugriff auf Informationen auf einer täglichen basis. Viele öffentliche Bibliotheken haben, ersetzt Ihre Karte Kataloge mit computer-terminals, die erlauben Besuchern die Suche nach Büchern, die weit mehr einfach und schnell. Flughäfen haben zahlreiche Bildschirme die Anzeige von Informationen zu ankommenden und abfliegenden Flüge. Viele Einzelhandelsgeschäfte verfügen über spezialisierte Computer, die mit point-of-sale-Transaktionen. In jedem dieser Fälle, Vernetzung ermöglicht viele verschiedene Geräte an verschiedenen Standorten, um den Zugriff auf ein gemeinsames repository mit Daten.

Bevor wir in die details eines Netzwerkstandards wie Ethernet, müssen wir zuerst verstehen, einige grundlegende Begriffe und Bezeichnungen, beschreiben und unterscheiden Netzwerk-Technologien-also lasst uns loslegen!

Bis Nächsten

  • Was sind die drei Arten von VPN?
  • Was Sie brauchen, um zu bauen ein eigenes WLAN-Netzwerk?
  • Was ist ein Netzwerk-server?
  • Wie Wählen Sie die Richtige E-mail-Server
  • Wie VPNs Funktionieren