C Tutorial/Pointer/Pointer Calculation — различия между версиями
Admin (обсуждение | вклад) м (1 версия: Импорт контента...) |
|
(нет различий)
|
Версия 14:21, 25 мая 2010
Содержание
Change value of variable through pointer
#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;
}
num1 = 2 num2 = 4 *pnum = 4 *pnum + num2 = 8
Pointer arrays
In the pointer array, the array elements is the pointer.
#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++;
}
}
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
#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;
}
pointer"s address: 9a378
When the pointer is incremented by an increment operator, it is always right incremented.
#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++;
}
}