Presentation is loading. Please wait.

Presentation is loading. Please wait.

Pointers Programming Applications. Pointer A pointer is a variable whose value is a memory address representing the location of the chunk of memory on.

Similar presentations


Presentation on theme: "Pointers Programming Applications. Pointer A pointer is a variable whose value is a memory address representing the location of the chunk of memory on."— Presentation transcript:

1 Pointers Programming Applications

2 Pointer A pointer is a variable whose value is a memory address representing the location of the chunk of memory on either the run-time stack or on the heap. Pointers have names, values and types. Value of p versus value pointed to by p

3 Pointer  The definition of pointer is Int *p; float *p1; char *p2;  Which means that p is a pointer to integer data in memory and p1 is a pointer to floating point data in memory

4 Declaring pointer variables  it is not enough to say that a variable is a pointer. You also have to specify the type of variable to which the pointer points ! int * p1; // p1 points to an integer float * p2; // p2 points to a float  Exception: generic pointers (void *) indicate that the pointed data type is unknown may be used with explicit type cast to any type (type *) void * p; type * variable_name;

5 Pointer using  To use the pointer: int *p, k; K=10; P= &k;  Means that p has the address of k in memory  Then &k means the address of k and *p means the value in address p

6 Example main() { int v1=11, v2=22, *p; p=&v1; printf( “ %d ”, p); p=&v2; printf( “ %d ”, p); printf( “ %d ”, *p); }

7 Example main() { int v1=11, v2=22, *p; p=&v1; printf( “ %d ”, p); *p=33; printf( “ %d \n %d ”, p, *p); }

8 Example main() { int v1=11, v2, *p; p=&v1; printf( “ %d ”, p); v2=*p; printf( “ %d %d ”, p, v2); }

9 Pointer int u=3, v; int *pu, *pv; pu= &u; v= *pu; Pv=&v; Printf( “ %d %d %d %d ”, u, &u, pu, *pu); Printf( “ \n %d %d %d %d ”, v, &v, pv, *pv);

10 Pointer int u1, u2, v=3; int *pv; u1 = 2 * (v+5); pv = &v; u2 = 2 * (*pv +5); printf( “ %d %d ”, u1, u2);

11 Trace int x,y; int * px; x = 5; px = &x; printf("x = %d\n", x); printf("x = %d\n", *px); y = *px; printf("y = %d\n", y); *px = 10; printf("x = %d\n", x); printf("x = %d\n", *px); px = &y; *px = 15; printf("x = %d\n", x); printf("y = %d\n", y); printf("what = %d\n", *px);

12 Trace int x,z; float y; char ch, *chp; int *ip1, *ip2; float *fp; x = 100; y = 20.0; z = 50; ip1 = &x; ip2 = &z; fp = &y; chp = &ch; ip2 = ip1; ip1 = &z; *ip1 = *ip2; *ip1 = 200; *ip1 = *ip2 + 300; *fp = 1.2; printf("%f\n", *fp); printf("%d\n", ip1); printf("%d\n", *ip1);

13 Pointer and array  If we define the array int x[5]={2, 1, 5, 6, 8}  The variable x only means pointer to the first element of array x[]  If we define pointer int *p;  Then we can use p as p = &x[0] Which means that p is pointer to first element or p = x

14 Pointer and array  Both x and p can be used as printf( “ %d ”, *(x+2)); means the x[2] printf( “ %d ”, *(p+1)); means the x[1] printf( “ %d ”, (*x+2)); means the x[0]+2

15 Pointer Int x[8] = {10, 20, 30, 40, 50, 60, 70, 80,}; Printf( “ %d %d %d %d %d ”, x, x+2, *x, (*x+2), *(x+2));

16 Example float list[10], *p1; for(int i=0; i<10;i++, p1++) *p1=i; for( i=0; i<10;i++) printf( “ %f ”, *(pt-i));

17 Function and Pointer  We can call function by value f(s)  Or call function by reference f(&s)  Or define pointer p = &s and call function f(p)

18 Function and pointer  In the function call by value, any modification held in the function will not affect the original value  In call of reference, the modification in function affect the original value.

19 Example void set (int x); int main(void) {int x=10,y=11; set(x); set(y); printf( “ %d%d ”, x,y);} void set (int x){ int y=x+2; x*=2; }

20 Example void set (int *x); int main(void) {int x=10,y=11; set(&x); set(&y); printf( “ %d%d ”, x,y);} void set (int *x){ int y=*x+2; *x*=2; }

21 Example void set (int &); int main(void) {int x=10,y=11; set(&x); set(&y); printf( “ %d%d ”, x,y);} void set (int &x){ int y=x+2; x *=2; }

22 Passing array void cent (double *); void main(){ double varray[5]={10.0, 43.1, 95.9, 59.7, 87.3}; cent(varray); for(int j=0; j<5; j++) printf( “ %d ”, varray[j]);} void cent (double *pt){ for(int j=0; j<5; j++) *pt++ *= 2.54; }

23 Pointer & String void disp ( char *); void main() { char str[] = “ Idel people have the …” ; disp(str); } void disp (char *ps){ while (*ps != “ \0 ” ) printf( “ %c ”, *ps++); }

24 Array of string pointer We can define array of pointer to strings as: char * arrstr[7]={ “ Saturday ”, “ Sunday ”, “ Monday ”, “ Tuesday ”, “ Wednesday ”, “ Thursday ”, “ Friday ” } for (int j=0; j<7; j++) printf( “ %s ”, arrstr[j]);

25 Example float list[10] ={1, 5, 6, 9, 10, 0, 45, 4, 61, 7}; float *p, *d; P=list; d=&list[9]; for( i=0; i<10;i++) printf( “ %f ”, *(p+i),*(d-i) );

26 #include Void push(int *, int); Void pop (int *); Main() { int *p, value; For(int t=0; t<5;t++) {scanf( “ %d ”, &value); push(p, value);} Pop(p); pop(p); } Void push(int *p, int v){ p++; *p=v;} void pop (int *p){printf( “ %d ”, *(p--));}

27 Trace #include Int f (int); Void main() {Int y=f(0); Int z = f(4); Printf ( “ %d \t %d \n “, y, z); } int f(int x) {if (x==0) return 0; Else if (x>=1) return x+f(x-1); }

28 Example  Using pointer, write a program that read a list of numbers and sort them using swap function which accept two pointers to elements in this list and swap them.

29 Example  Write a program to read group of numbers from the user and then average them after stored them in an array and print the result. You should use pointer as possible.

30 Example  Write a function String which accept as argument the pointer to string and convert the string to all upper case. You can use the toupper() library function which takes a single character and return this character in upper case.

31 NULL pointers  Values of a pointer variable: Usually the value of a pointer variable is a pointer to some other variable Another value a pointer may have: it may be set to a null pointer  A null pointer is a special pointer value that is known not to point anywhere.  No other valid pointer, to any other variable, will ever compare equal to a null pointer !  Predefined constant NULL, defined in  Good practice: test for a null pointer before inspecting the value pointed ! #include int *ip = NULL; if(ip != NULL) printf("%d\n", *ip); if(ip ) printf("%d\n", *ip);

32 u Never use uninitialized pointers. u To increment a dereferenced pointer, use  (*p)++  rather than  *p++ /* correct but means … */

33 Generic Pointers and NULL Java: a reference to "any" kind of object  use a variable of type Object C: a reference to "any" kind of object  use a variable of type void*  void *p;  defines a generic, or typeless pointer p. Often casted to (T*)p NULL value can be assigned to any pointer, no matter what its type.

34 Generic Pointers and NULL  void *p = NULL;  int i = 2;  int *ip = &i;  p = ip;  printf("%d", *p);  printf("%d", *((int*)p ) );

35 Pointer Expressions and Pointer Arithmetic pv+n  pv + n*sizeof ( variable type that pointer point to )  Arithmetic operations can be performed on pointers Increment/decrement pointer ( ++ or -- ) Example: ++vPtr, vPtr++, --vPtr, vPtr-- Add an integer to a pointer( + or +=, - or -= ) Pointers may be subtracted from each other Operations meaningless unless performed on an array


Download ppt "Pointers Programming Applications. Pointer A pointer is a variable whose value is a memory address representing the location of the chunk of memory on."

Similar presentations


Ads by Google