Quel est indicateur ?
|
Dans c, un indicateur est une variable qui se dirige � ou met en r�f�rence un endroit de m�moire dans lequel des donn�es sont stock�es. Dans l'ordinateur, chaque cellule de m�moire a une adresse qui peut �tre employ�e pour acc�der � cet endroit ainsi � points d'une variable d'indicateur � un endroit de m�moire que nous pouvons acc�der et changeons le contenu de cet endroit de m�moire par l'interm�diaire de l'indicateur.
|
D�claration d'indicateur :
|
Un indicateur est une variable qui contient l'endroit de m�moire d'une autre variable dans des donn�es de shich est stock�e. En utilisant l'indicateur, vous commencez par indiquer le type de donn�es stock�es dans l'endroit. L'ast�risque aide � indiquer au compilateur que vous cr�ez une variable d'indicateur. Enfin vous devez donner le nom de la variable. La syntaxe est comme montr�e ci-dessous.
|
|
L'exemple suivant illustrent le declataion de la variable d'indicateur
|
|
Op�rateur d'adresse :
|
Une fois que nous d�clarons une variable d'indicateur puis nous devons la diriger � quelque chose que nous pouvons faire ceci en assignant � l'indicateur l'adresse de la variable vous voulez se diriger comme dans l'exemple suivant :
|
|
Le code ci-dessus indique que l'adresse o� num�rique est des magasins dans le PTR variable. Le PTR variable a la valeur 21260, si num�rique est stock� dans l'adresse de la m�moire 21260 alors
|
Le programme suivant illustrent la d�claration d'indicateur
|
/* A program to illustrate pointer declaration*/
main()
{
int *ptr;
int sum;
sum=45;
ptr=&sum
printf ("\n Sum is %d\n", sum);
printf ("\n The sum pointer is %d", ptr);
}
|
|
Expressions d'indicateur et arithm�tique d'indicateur :
|
Dans les expressions, comme d'autres variables d'indicateur de variables peut �tre employ�. Par exemple si p1 et p2 sont correctement initialis�s et les indicateurs avou�s, alors les rapports suivants sont valides. |
y=*p1**p2;
sum=sum+*p1;
z= 5* - *p2/p1;
*p2= *p2 + 10;
|
|
C nous permet de soustraire des nombres entiers � ou d'ajouter des nombres entiers des indicateurs aussi bien que pour soustraire un indicateur de l'autre. Nous pouvons �galement employer les op�rateurs courts de main avec les indicateurs p1+= ; sum+=*p2 ; etc., en employant des op�rateurs de relation, nous pouvons �galement comparer des indicateurs comme les expressions telles que p1 >p2, p1==p2 et p1 ! on permet =p2.
|
Le programme suivant illustrent l'expression d'indicateur et l'arithm�tique d'indicateur
|
/*Program to illustrate the pointer expression and pointer arithmetic*/
#include< stdio.h >
main()
{
int ptr1,ptr2;
int a,b,x,y,z;
a=30;b=6;
ptr1=&a;
ptr2=&b;
x=*ptr1+ *ptr2 6;
y=6*- *ptr1/ *ptr2 +30;
printf("\nAddress of a +%u",ptr1);
printf("\nAddress of b %u",ptr2);
printf("\na=%d, b=%d",a,b);
printf("\nx=%d,y=%d",x,y);
ptr1=ptr1 + 70;
ptr2= ptr2;
printf("\na=%d, b=%d,"a,b);
}
|
|
Indicateurs et fonction :
|
Dans une d�claration de fonction, l'indicateur sont tout d'abord employ�s. Parfois, seulement avec un indicateur une fonction complexe peut �tre facilement repr�sent�e et succ�s. Dans une d�finition de fonction, l'utilisation des indicateurs peut �tre classifi�e dans deux groupes.
- Appel par la r�f�rence
- Appel par valeur.
|
Appel par valeur :
|
Nous avons vu qu'il y aura un lien �tabli entre les param�tres formels et effectifs quand une fonction est appel�e. D�s que la m�moire temporaire sera cr��e o� la valeur des param�tres effectifs est stock�e. Les param�tres formels prend sa valeur de zone de stockage le m�canisme du transfert de donn�es entre formel et les param�tres effectifs permet le m�canisme de param�tres effectifs du transfert de donn�es est r�f�r� comme appel par valeur. Le param�tre formel correspondant repr�sente toujours une variable locale dans la fonction appel�e. La valeur courante du param�tre effectif correspondant devient la valeur initiale du param�tre formel. Dans le corps du param�tre effectif, la valeur du param�tre formel peut �tre chang�e. Dans le corps du sous-programme, la valeur du param�tre formel peut �tre chang�e par des rapports de t�che ou d'entr�e. Ceci ne changera pas la valeur des param�tres effectifs.
|
/* Include< stdio.h >
void main()
{
int x,y;
x=20;
y=30;
printf("\n Value of a and b before function call =%d %d",a,b);
fncn(x,y);
printf("\n Value of a and b after function call =%d %d",a,b);
}
fncn(p,q)
int p,q;
{
p=p+p;
q=q+q;
}
|
|
Appel par la r�f�rence :
|
L'adresse devrait �tre des indicateurs, quand nous passons � adresse � une fonction la r�ception de param�tres. En employant des indicateurs, le processus d'appeler une fonction pour passer l'adresse de la variable est connu comme appel par la r�f�rence. La fonction qui s'appelle par la r�f�rence peut changer la valeur de la variable utilis�e dans l'appel.
|
/* example of call by reference*?
/* Include< stdio.h >
void main()
{
int x,y;
x=20;
y=30;
printf("\n Value of a and b before function call =%d %d",a,b);
fncn(&x,&y);
printf("\n Value of a and b after function call =%d %d",a,b);
}
fncn(p,q)
int p,q;
{
*p=*p+*p;
*q=*q+*q;
}
|
|
Indicateur aux rang�es :
|
une rang�e est r�ellement beaucoup semblable comme l'indicateur. Nous pouvons d�clarer car le *a interne est une adresse, parce qu'a [0] le premier �l�ment de rang�es comme a [0] et le *a est �galement une adresse la forme de d�claration est �galement �quivalent. La diff�rence est indicateur peut appara�tre du c�t� gauche de l'op�rateur de t�che et c'est a est une variable qui est lvalue. Le nom de rang�e ne peut pas appara�tre en tant que c�t� gauche d'op�rateur de t�che et est constant.
|
/* A program to display the contents of array using pointer*/
main()
{
int a[100];
int i,j,n;
printf("\nEnter the elements of the array\n");
scanf(%d,&n);
printf("Enter the array elements");
for(I=0;I< n;I++)
scanf(%d,&a[I]);
printf("Array element are");
for(ptr=a,ptr< (a+n);ptr++)
printf("Value of a[%d]=%d stored at address %u",j+=,*ptr,ptr);
}
|
|
Indicateurs et structures
|
Nous savons que le nom des stands d'une rang�e pour l'adresse de son �l�ment de zeroth que le m�me concept applique pour des noms des choix de structures. Supposer que l'article est une variable de rang�e du type de struct. Consid�rer la d�claration suivante :
|
struct products
{
char name[30];
int manufac;
float net;
item[2],*ptr;
|
|
ce PTR de rapport en tant qu'objets des donn�es d'indicateur de type produits de struct et d�clare l'article comme choix de deux �l�ments, chaque type produits de struct.
|
Indicateurs sur l'indicateur
|
Un indicateur contient la valeur d'ordures jusqu'� ce qu'il soit initialis�. Puisque les compilateurs ne peuvent pas d�tecter les erreurs ne peuvent �tre connues jusqu'� ce que nous ex�cutions le programme nous rappelions que m�me si nous pouvons localiser un r�sultat faux, uninitialized ou a incorrectement initialis� des indicateurs qu'il peut ne pas fournir aucune �vidence pour nous aux probl�mes suspects dans les indicateurs. Par exemple les expressions comme
|
*ptr++, *p[],(ptr).member
|
|
Keywords:
Pointers in C,
double pointers in c,
pointers in c language,
pointer in c,
pointers in c++,
function pointers in c,
function pointer in c,
using pointers in c,
data types in c,
array of pointers in c,
pointers in c#,
pointer to pointer in c,
pointer to a pointer in c,
pointers to functions in c,
file pointer in c,
file pointers in c
|