C Tutorial/Pointer/Pointer Calculation — различия между версиями

Материал из C\C++ эксперт
Перейти к: навигация, поиск
м (1 версия: Импорт контента...)
 
(нет различий)

Текущая версия на 13:32, 25 мая 2010

Change value of variable through pointer

<source lang="cpp">#include <stdio.h> int main(void) {

 long num1 = 0;
 long num2 = 0;
 long *pnum = NULL;
 pnum = &num1;                              
 *pnum = 2;                                 
 ++num2;                                    
 num2 += *pnum;                             
 pnum = &num2;                              
 ++*pnum;                                   
 printf ("\nnum1 = %ld  num2 = %ld  *pnum = %ld  *pnum + num2 = %ld\n",
                                     num1, num2, *pnum, *pnum + num2);
 return 0;

}</source>

num1 = 2  num2 = 4  *pnum = 4  *pnum + num2 = 8

Pointer arrays

In the pointer array, the array elements is the pointer.


<source lang="cpp">#include <stdio.h> main(){

   int *a[5];
   int i1=4,i2=3,i3=2,i4=1,i5=0;
   a[0]=&i1;
   a[1]=&i2;
   a[2]=&i3;
   a[3]=&i4;
   a[4]=&i5;
   printf("Address        Address in array         Value\n");
   int j;
   for(j=0;j<5;j++)
   {
       printf("%16u           %16u                 %d\n",
       a[j],a[j],a[j]);
   }
   printf("using pointer\n");
   int *b;
   b = a;
   for( j=0;j<5;j++)
   {
       printf("value of elements   %d %16lu\n",*b,*b,b);
       b++;
   }

}</source>

value in array 2
      value in array 2
      value in array 2
      value in array 2
      value in array 2
      value in array 2
      value in array 2 and address is   631648
      value in array 2 and address is   631652
      value in array 2 and address is   631656
      value in array 2 and address is   631660
      value in array 2 and address is   631664
      value in array 2 and address is   631668

Store the address of number in pointer

<source lang="cpp">#include <stdio.h> int main(void) {

 int number = 0;                 
 int *pointer = NULL;            
 number = 10;
 pointer = &number;  /*Store the address of number in pointer   */ 
 printf("pointer"s address: %p", &pointer);
 return 0;

}</source>

pointer"s address: 9a378

When the pointer is incremented by an increment operator, it is always right incremented.

<source lang="cpp">#include <stdio.h> main(){

   int a[5];
   int i;
   for(i = 0;i<5;i++){
       a[i]=i;
   }
   int *b;
   b=a;
   for(i = 0;i<5;i++)
   {
       printf("value in array %d and address is %16lu\n",*b,b);
       b++;                 
   }

}</source>