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.

Output

1st distance

Enter feet: 12

Enter inch: 7.9

2nd distance

Enter feet: 2

Enter inch: 9.8

Sum of distances= 15'-5.7"

Keyword typedef while using structure

Programmer generally use typedef while using structure in C language. For example:

typedef struct complex{

int imag;

float real;

}comp;

Inside main:

comp c1,c2;

Here, typedef keyword is used in creating a type comp(which is of type as struct complex). Then, two structure variables c1 and c2 are created by this comp type.

Structures within structures

Structures can be nested within other structures in C programming.

struct complex

{

int imag_value;

float real_value;

};

struct number{

struct complex c1;

int real;

}n1,n2;

Suppose you want to access imag_value for n2 structure variable then, structure member n1.c1.imag_value is used.

C Programming Structure and Pointer

Pointers can be accessed along with structures. A pointer variable of structure can be created as below:

struct name {

member1;

member2;

.

.

};

-------- Inside function -------

struct name *ptr;

Here, the pointer variable of type struct name is created.

Structure's member through pointer can be used in two ways:

1. Referencing pointer to another address to access memory

2. Using dynamic memory allocation

Consider an example to access structure's member through pointer.

#include <stdio.h>

struct name{

int a;

float b;

};

int main(){

struct name *ptr,p;

ptr=&p; /* Referencing pointer to memory address of p */

printf("Enter integer: ");

scanf("%d",&(*ptr).a);

printf("Enter number: ");

scanf("%f",&(*ptr).b);

printf("Displaying: ");

printf("%d%f",(*ptr).a,(*ptr).b);

return 0;

}

In this example, the pointer variable of type struct name is referenced to the address of p. Then, only the structure member through pointer can can accessed.

Structure pointer member can also be accessed using -> operator.

(*ptr).a is same as ptr->a

(*ptr).b is same as ptr->b

Accessing structure member through pointer using dynamic memory allocation

To access structure member using pointers, memory can be allocated dynamically using malloc() function defined

under "stdlib.h" header file.

Syntax to use malloc()

ptr=(cast-type*)malloc(byte-size)

Example to use structure's member through pointer using malloc() function.

#include <stdio.h>

#include<stdlib.h>

struct name {

int a;

float b;

char c[30];

};

int main(){

struct name *ptr;

int i,n;

printf("Enter n: ");

scanf("%d",&n);

ptr=(struct name*)malloc(n*sizeof(struct name));

/* Above statement allocates the memory for n structures with pointer ptr pointing to

base address */

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

printf("Enter string, integer and floating number respectively:\n");

scanf("%s%d%f",&(ptr+i)->c,&(ptr+i)->a,&(ptr+i)->b);

}

printf("Displaying Infromation:\n");

for(i=0;i<n;++i)

printf("%s\t%d\t%.2f\n",(ptr+i)->c,(ptr+i)->a,(ptr+i)->b);

return 0;

}