Pointers (Continued …..)
1
Arrays and pointers
2
27/12/22
this is indeed *(b+3) = 5; (b+3) is same as (3+b)
So, equivalently we can write 3[b] = 5;
Array of pointers
3
27/03/22
Note, [ ] has higher precedence than *
Array of pointers
4
char name1[ ] = “Ram”; char name2[ ] = “Peter”; char name3[ ] = “Johnson”; val[0] = name1;
val[1] = name2;
val[2] = val[3] = name3;
Array of pointers
5
char *val[4]; char buf[64]; val[0] = buf;
scanf(“%s”, val[0]);
Array of pointers
6
“thu”, “fri”, “sat”};
String constants Vs character arrays
7
/* This is equivalent to
char a[ ] = { ‘H’, ’e’, ’l’, ’l’, ’o’, ’\0’ }; */ a[0] = ‘B’; /* OK */
String constants Vs character arrays
8
a[0][0] = ‘b’; /* OK */
2-dimensional arrays
9
Row 0 | | | | | | | a[0] | ⬄ | *(a + 0 ) |
Row 1 | | a[1] | ⬄ | *(a + 1 ) | |||||
Row 2 | | a[2] | ⬄ | *(a + 2 ) | |||||
Row 3 | | a[3] | ⬄ | *(a + 3 ) | |||||
2-dimensional arrays
10
a[2][3] = 10;
/* this is equivalent to
*(*(a + 2) + 3) = 10;
*/
Arrays and pointers
11
1 | 2 | 3 | 4 |
( p + 1)
int *p; p = a;
(p+1)[2] = 10;
/* this is same as a[3] = 10; */
/* remember a[3] is same as *(a+3) ,
hence (p+1)[2] = *(p+1+2) = *(a+3) = a[3] */
Pointers
12
multi-dimensional arrays is a a tricky one.