Pointer level 2
-
Upload
mohamed-sikander -
Category
Software
-
view
96 -
download
0
Transcript of Pointer level 2
![Page 1: Pointer level 2](https://reader034.fdocuments.net/reader034/viewer/2022042611/587830a71a28abef5d8b68ef/html5/thumbnails/1.jpg)
C ProgrammingPointers – Level-II
Prepared by Mohammed SikanderTechnical LeadCranes Software International Limited
![Page 2: Pointer level 2](https://reader034.fdocuments.net/reader034/viewer/2022042611/587830a71a28abef5d8b68ef/html5/thumbnails/2.jpg)
char *ptr_name = “SIKANDER”;char str_name[ ] = “SIKANDER”;
• Can we make a pointer point to string literal?
![Page 3: Pointer level 2](https://reader034.fdocuments.net/reader034/viewer/2022042611/587830a71a28abef5d8b68ef/html5/thumbnails/3.jpg)
char *ptr_name = “SIKANDER”;char str_name[ ] = “SIKANDER”;
printf(“ %s \n“ , ptr_name);printf(“ %s \n“ , str_name);
• Can we print the string through pointer.
![Page 4: Pointer level 2](https://reader034.fdocuments.net/reader034/viewer/2022042611/587830a71a28abef5d8b68ef/html5/thumbnails/4.jpg)
char *ptr_name = “SIKANDER”;char str_name[ ] = “SIKANDER”;
printf(“Length of %s = %d\n“ , ptr_name , strlen(ptr_name));
printf(“Length of %s = %d\n“ , str_name , strlen(str_name));
![Page 5: Pointer level 2](https://reader034.fdocuments.net/reader034/viewer/2022042611/587830a71a28abef5d8b68ef/html5/thumbnails/5.jpg)
char *ptr_name = “SIKANDER”;char str_name[ ] = “MUQADDAR”;
printf(“Size of ptr_name = %d\n“ , sizeof(ptr_name));
printf(“Size of str_name = %d\n“ , sizeof(str_name));
![Page 9: Pointer level 2](https://reader034.fdocuments.net/reader034/viewer/2022042611/587830a71a28abef5d8b68ef/html5/thumbnails/9.jpg)
Array of PointersWe can have arrays where each element can be a pointer
int *
char **
int *
int *
int *
int *
int *arr_ptr[5];
int
int
int
int
int
int arr[5];
What is size of arr?What is size of arr_ptr?
![Page 10: Pointer level 2](https://reader034.fdocuments.net/reader034/viewer/2022042611/587830a71a28abef5d8b68ef/html5/thumbnails/10.jpg)
Array of Pointers
char **
Char *arr_ptr[5];
char *
char *
char *
char *
char *
char
char
char
char
char
Char arr[5];
What is size of arr?What is size of arr_ptr?
![Page 11: Pointer level 2](https://reader034.fdocuments.net/reader034/viewer/2022042611/587830a71a28abef5d8b68ef/html5/thumbnails/11.jpg)
int x = 10;int *ptr =
&x;
int arr[5] int *ptr =
arr;
int a = 10;int b = 23;int arr[ ] = {12,34,54};int *ptr[ ] = {&a , &b ,
arr};
![Page 12: Pointer level 2](https://reader034.fdocuments.net/reader034/viewer/2022042611/587830a71a28abef5d8b68ef/html5/thumbnails/12.jpg)
Array of Pointers
char *capitalCities[] = { “Bangalore”,“Chennai”, “Guwahati”, “Amravathi”};
Bangalore
Chennai
Guwahati
Amravathi
****
char *
char *
char *
char *
char *str = “VxWorks”;
![Page 14: Pointer level 2](https://reader034.fdocuments.net/reader034/viewer/2022042611/587830a71a28abef5d8b68ef/html5/thumbnails/14.jpg)
Array of Pointers
names++ tries to change the base address of array. We cannot change the base address of array. Str was a pointer, names is an array.
![Page 17: Pointer level 2](https://reader034.fdocuments.net/reader034/viewer/2022042611/587830a71a28abef5d8b68ef/html5/thumbnails/17.jpg)
Array of Pointers
char **
*Bangalor
eChennai
Guwahati
Amravathi NULL
****
char *
char *
char *
char *
![Page 18: Pointer level 2](https://reader034.fdocuments.net/reader034/viewer/2022042611/587830a71a28abef5d8b68ef/html5/thumbnails/18.jpg)
void pointers
Void pointers can hold the address of any type of object.
Dereferencing on void pointers are not allowed.
Incrementing void pointers are not allowed.
![Page 26: Pointer level 2](https://reader034.fdocuments.net/reader034/viewer/2022042611/587830a71a28abef5d8b68ef/html5/thumbnails/26.jpg)
Program to understand realloc.If realloc allocates new block in different location, it copies data from old block to new block
![Page 28: Pointer level 2](https://reader034.fdocuments.net/reader034/viewer/2022042611/587830a71a28abef5d8b68ef/html5/thumbnails/28.jpg)
By making ptr as constant pointer, any modification to ptr can be caught at compile time.