Presentation is loading. Please wait.

Presentation is loading. Please wait.

14th September IIT Kanpur

Similar presentations


Presentation on theme: "14th September IIT Kanpur"— Presentation transcript:

1 14th September IIT Kanpur
6. More on Pointers 14th September IIT Kanpur C Course, Programming club, Fall 2008

2 C Course, Programming club, Fall 2008
Pointers and arrays Pointers and arrays are tightly coupled. char a[] = “Hello World”; char *p = &a[0]; C Course, Programming club, Fall 2008

3 Pointers and arrays contd..
Name of the array is synonymous with the address of the first element of the array. int *p; int sample[10]; p = sample; // same as p = &sample[0]; int *p; int sample[10]; p = sample; p[5] = 100; // Both these statements *(p+5) = 100; // do the same thing C Course, Programming club, Fall 2008

4 Pointers and function arguments
Functions only receive copies of the variables passed to them. {program: swap_attempt_1.c} A function needs to know the address of a variable if it is to affect the original variable {program: swap_attempt_2.c} Large items like strings or arrays cannot be passed to functions either. What is passed is the address of “hello world\n” in the memory. printf(“hello world\n”); C Course, Programming club, Fall 2008

5 Passing single dimension arrays to functions
In C, you cannot pass the entire data of the array as an argument to a function. How to pass array then? Pass a pointer to the array. int main() { int sample[10]; func1(sample); } void func1(int *x) { void func1(int x[10]) { void func1(int x[]) { C Course, Programming club, Fall 2008

6 2-Dimensional Arrays (Array of arrays)
Access the point 1, 2 of the array: d[1][2] Initialize (without loops): int d[3][2]; int d[3][2] = {{1, 2}, {4, 5}, {7, 8}}; C Course, Programming club, Fall 2008

7 More about 2-Dimensional arrays
A Multidimensional array is stored in a row major format. A two dimensional case:  next memory element to d[0][3] is d[1][0] d[0][0] d[0][1] d[0][2] d[0][3] d[1][0] d[1][1] d[1][2] d[1][3] d[2][0] d[2][1] d[2][2] d[2][3] What about memory addresses sequence of a three dimensional array?  next memory element to t[0][0][0] is t[0][0][1] C Course, Programming club, Fall 2008

8 Multidimensional Arrays
Syntax type array_name[size1][size2]…[sizeN]; e.g size of array = 3 x 6 x 4 x 8 x 4 bytes int a[3][6][4][8]; C Course, Programming club, Fall 2008

9 C Course, Programming club, Fall 2008
Arrays of Pointers Declares an array of int pointers. Array has 10 pointers. Assign address to a pointer in array To find the value of var, int *x[10]; x[2] = &var; int i =*x[2]; C Course, Programming club, Fall 2008

10 C Course, Programming club, Fall 2008
Pointer to Pointer Declaration Place an additional asterisk newbalance is a pointer to a double pointer. double **newbalance; C Course, Programming club, Fall 2008

11 Pointer to Pointer contd..
{program: pointers.c} #include <stdio.h> int main() { int x, *p, **q; x = 10; p = &x; q = &p; printf(“%d %d %d\n”, x, *p, **q); return 0; } C Course, Programming club, Fall 2008

12 Dynamic Memory Allocation
To allocate memory at run time. malloc(), calloc() both return a void* you’ll need to typecast each time. char *p; p = (char *)malloc(1000); /*get 1000 byte space */ int *i; i = (int *)malloc(1000*sizeof(int)); C Course, Programming club, Fall 2008

13 Dynamic Memory Allocation contd..
To free memory free() free(ptr) frees the space allocated to the pointer ptr int *i; i = (int *)malloc(1000*sizeof(int)); . free(i); C Course, Programming club, Fall 2008

14 C Course, Programming club, Fall 2008
Pointers to functions A function pointer stores the address of the function. Function pointers allow: call the function using a pointer functions to be passed as arguments to other functions return_type (*function_name)(type arg1, type arg2…) {program: function_pointer.c} C Course, Programming club, Fall 2008


Download ppt "14th September IIT Kanpur"

Similar presentations


Ads by Google