본문 바로가기

C 놀이터

2012.05.16

P.295

 

//PointerOperationResult.c

 

#include <stdio.h>

 

int main(void)

{

int * ptr1 = 0x0010;  // put pointer address to ptr1

double * ptr2 = 0x0010;// put pointer address to ptr2

 

printf("%p %p \n", ptr1+1, ptr1+2); // increase +4 and +8 , because ptr is int variable

printf("%p %p \n", ptr2+1, ptr2+2);//               +8        +16                      double

 

printf("%p %p \n", ptr1 , ptr2);    // print out ptr1, ptr2           

ptr1++;   // increase 4 

ptr2++;   // increase 8

 

printf("%p %p \n", ptr1 , ptr2);

 

retrun 0 ;

}

 

 

//PointerBaseArrayAccess.c

 

#include <stdio.h>

 

int main(void)

{

int arr[3] = {11, 22, 33};

int * ptr = arr; // >> int * ptr = &arr[0]

printf("%d %d %d \n", *ptr, *(ptr+1), *(ptr+2) );

 

printf("%d ", *ptr); ptr++;

printf("%d ", *ptr); ptr++;

printf("%d ", *ptr); ptr--;

printf("%d ", *ptr); ptr--;

ptintf("%d ", *ptr); printf("\n");

 

return 0 ;

}

 

문제 13-1

 

//문제 1

 

#include <stdio.h>

 

int main (void)

{

int arr[5] = {1, 2, 3, 4, 5};

int *ptr = arr;

 

for(int i =0; i<5; i++)

{    printf(" %d ", ptr[i] );

arr[i]+=2                              // *ptr +=2;

printf(" %d \n", ptr[i] );

}

 

return 0 ;

}

 

// 문제2

 

#include <stdio.h>

 

int main(void)

{

int arr[5] = {1, 2, 3, 4, 5

int *ptr = &arr[0];

 

for(int i=0 ; I<5 ; i++)

{

*(ptr+i) += 2;

printf("%d ", arr[i] );000000

 

 

}