C Tutorial/Pointer/Pointer Calculation — различия между версиями
Admin (обсуждение | вклад) м (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>