C Language Tutorials by Ghulam Murtaza Dahar - HTML preview

PLEASE NOTE: This is an HTML preview only and some elements such as links or page numbers may be incorrect.
Download the book in PDF, ePub, Kindle for a complete version.

Commonly done mistakes in pointers

Suppose, the programmer want pointer pc to point to the address of c. Then,

int c, *pc;

pc=c; /* pc is address whereas, c is not an address. */

*pc=&c; /* &c is address whereas, *pc is not an address. */

In both cases, pointer pc is not pointing to the address of c.

Pointers and Arrays

Arrays are closely related to pointers in C programming. Arrays and pointers are synonymous in terms of how they use to access memory. But, the important difference between them is that, a pointer variable can take different addresses as value whereas, in case of array it is fixed. This can be demonstrated by an example:

#include <stdio.h>

int main(){

char c[4];

int i;

for(i=0;i<4;++i){

printf("Address of c[%d]=%x\n",i,&c[i]);

}

return 0;

}

Address of c[0]=28ff44

Address of c[1]=28ff45

index-57_1.jpg

Address of c[2]=28ff46

Address of c[3]=28ff47

Notice, that there is equal difference (difference of 1 byte) between any two consecutive elements of array.

Note: You may get different address of an array.

Relation between Arrays and Pointers

Consider and array:

int arr[4];

In arrays of C programming, name of the array always points to the first element of an array. Here, address of first element of an array is &arr[0]. Also, arr represents the address of the pointer where it is pointing. Hence, &arr[0] is equivalent to arr.

Also, value inside the address &arr[0] and address arr are equal. Value in address &arr[0] is arr[0] and value in addressarr is *arr.

Hence, arr[0] is equivalent to *arr.

Similarly,

&a[1] is equivalent to (a+1) AND, a[1] is equivalent to *(a+1).

&a[2] is equivalent to (a+2) AND, a[2] is equivalent to *(a+2).

&a[3] is equivalent to (a+1) AND, a[3] is equivalent to *(a+3).

.

.

&a[i] is equivalent to (a+i) AND, a[i] is equivalent to *(a+i).

In C, you can declare an array and can use pointer to alter the data of an array.

//Program to find the sum of six numbers with arrays and pointers.

#include <stdio.h>

int main(){

int i,class[6],sum=0;

printf("Enter 6 numbers:\n");

for(i=0;i<6;++i){

scanf("%d",(class+i)); // (class+i) is equivalent to &class[i]

sum += *(class+i); // *(class+i) is equivalent to class[i]

}

printf("Sum=%d",sum);

return 0;

}

Find Your Next Great Read

Describe what you're looking for in as much detail as you'd like.
Our AI reads your request and finds the best matching books for you.

Showing results for ""

Popular searches:

Romance Mystery & Thriller Self-Help Sci-Fi Business