Skip to main content

sizeof operator in C

It is used to find the size(in bytes) of data type or variable.  Consider the following examples,

Example 1:
int arr[100];
sizeof(int)            - 4 bytes  // size of an integer
sizeof(arr)            - 400 bytes // size of 100 elements in an integer array

Example 2:
Structure is a user defined compound data type which can have elements of different data types grouped under a common name.  We will see more about structures in forth coming tutorials.

struct student {
     char name[100];
     int age, rollno;
};
struct student obj, *ptr

sizeof(struct student) - 108 bytes   // size of structure student
sizeof(obj)                - 108 bytes  // size of structure variable of type student
sizeof(ptr)                 - 4 bytes    // size of pointer to structure of type student

The total size of the structure student is 108 bytes(name - 100 bytes, age - 4 bytes, rollno - 4 bytes).  Here, obj is a structure variable of type student and ptr is a pointer to structure of type student.

The return type of sizeof() operator is unsigned integer.  And this operator is defined in <stddef.h>

Example C program on sizeof() operator
 
#include <stdio.h>
struct student {
char name[100];
int age, rollno;
};

int main() {
int arr[100];
struct student obj, *ptr;
printf("sizeof(int): %d\n", sizeof(int)); // size of integer
printf("sizeof(arr): %d\n", sizeof(arr)); // sizeof array
printf("sizeof(struct student): %d\n",
sizeof(struct student)); // size of structure
printf("sizeof(obj): %d\n", sizeof(obj)); // obj is of type struct student
printf("sizeof(ptr): %d\n", sizeof(ptr)); // ptr is pointer to struct student
return 0;
}


  Output:
  jp@jp-VirtualBox:~/$ ./a.out
  sizeof(int): 4
  sizeof(arr): 400
  sizeof(struct student): 108
  sizeof(obj): 108
  sizeof(ptr): 4




Comments

Popular posts from this blog

Array of pointer to structure

Array of pointer to structure is nothing but an array whose elements are pointers to structure How to declare array of pointer to structure? Below is an example declaration for array of pointer to structure. struct student *arr[10]; Here, arr is an array 10 of pointer to structure student. Dynamic memory allocation: Below is the procedure to perform dynamic memory allocation for the structure pointers in an array. struct student { int age; char name[32]; }; fun() { int i = 0; struct student *arr[10]; for (i = 0; i < 10; i++) { /* dynamic memory allocation for 5 structure objects */ arr[i] = (struct student *)malloc(sizeof(struct student) * 5); } } Write a c program to pass an array of structure pointers to another function   #include <stdio.h>   #include <stdlib.h>   #include <string.h>   struct student {         int age, rollno;         char name[32];   };   /* printing details of stude...

Nested function in C

What is nested function? If a function is defined inside another function, then it is called as nested function.  Nested function example in C: Consider the following example, int add(int a, int b) {        void print(int res) {          printf("Result is %d, res);       }       print(a+b);       return 0; } Here, print() is a nested function.  Because, it is defined inside another function named add() . Example C program using nested functions: #include <stdio.h> void add(int a, int b) { void print(int res) { // nested function printf("Result is %d\n", res); return; } print(a + b); // passing sum of a and b as parameter return; } int main() { add(10, 20); return 0; }   Output:   jp@jp-VirtualBox:~/$ ./a.out   Result is 30 Previous Next

Difference between asterisk and ampersand operators in c

Address Operator (& - Ampersand): Returns address of the given variable.  Consider the following example, int *ptr, var = 10; ptr = &var; ptr = &var sets the address of the variable var to pointer ptr.  & is also called as reference operator. Let us try to understand the purpose of reference operator using the following example program.   #include <stdio.h>   int main() {         int var = 10, *ptr;         /* assigning address of variable var to pointer ptr */         ptr = &var;         /* printing the address of the variable var */         printf("Address of var is 0x%x\n", &var);         /* printing the value of pointer ptr */         printf("Value of ptr is 0x%x\n", ptr);         return 0;   }   Output:   jp@jp-VirtualBox:~/$ ./a.out   Address of var is 0x...