×

Sizeof in C

A pointer in C is defined as a variable that stores the information of the address of another variable. A pointer can be incremented or decremented, which means we can point to a different memory location using the previous one.

In C language, pointers are used for faster execution and in memory management.

& operator

Let us declare a variable, say x of int type.

int x = 10;

Now, if we print the value of x, it will print 10. But if we want to know at what memory location, the x is stored. We will use & operator. This prints the address of a variable.

For example

#include <stdio.h>
int main() {
int x = 10; // The value of x
printf("The value of x is %d\n", x);
printf("The address of x is %d", &x);
return 0;
}

Output

Note - The address can be printed differently on different machines.

How does a pointer work in C language?

We declare pointers as follows -

data_type *pointer_variable;

Example

int *x // An integer pointer variable

char *ch // A character pointer variable

Now we have declared a variable. Let us initialize the variable.

int *x = &y // Here the address of y is stored in x.

Here, x will now point to the memory location of y.

Code

#include<stdio.h> 
int main(){ 
int number=50; // declare a variable whose value is 50
int *p;    // declare pointer variable p
p=&number; //stores the address of number variable in pointer  
printf("Address of p variable is %x \n",p); // p contains the address of the number therefore printing p gives the address of number.
printf("Value of p variable is %d \n",*p); // As we know that * is used to dereference a pointer therefore if we print *p, we will get the value stored at the address contained by p.
return 0; 
}

Output

Sizeof in C

Sizeof() function in C

The function sizeof() in terms of a variable returns the number of bytes taken by a variable in the memory. It is a compile-time unary operator that returns the size of the operand.

Note: a pointer variable is not fixed as it is dependent on computer architecture.

The sizeof() function is used for different purposes –

When the operand is a data type.

The sizeof() function calculates the size of different data types as an operand. Data types may include int, float, char, etc.

Example

#include <stdio.h>
int main()
{
      printf("%lu\n", sizeof(char)); // calculate the size of char
      printf("%lu\n", sizeof(int)); // calculate the size of int
      printf("%lu\n", sizeof(float)); // calculate the size of float
      printf("%lu", sizeof(double)); // calculate the size of double
      return 0;
}

Output

1

4

4

8

To calculate the size of the expression

The sizeof() function is used to calculate the size of the expression. Let us see the following example –

Example

#include <stdio.h>
int main()
{
      int a = 0; // Declare an int
      double d = 10.21; // Declare a double
      printf("%lu", sizeof(a + d)); // Output is a double
      return 0;
}

Output

8

Explanation

From the above example, it is seen that the size of an integer is 4 bytes. And the size of the double is 8 bytes. Hence, the output of (a+b) will be 8                bytes.

Note: The sizeof() is a compile time operator so it does not evaluate any code inside its (). For example,

Code

#include<stdio.h>
int main() {
int y;
int x = 11;
y = sizeof(x++); //value of x doesn't change
printf("y = %d, x= %d",y,x);
}

Output

y = 4, x= 11

Explanation

In the above code, the value of y is four which is the size of the x integer. When we print the value of x, we get the same as 11 even after increment because it does not evaluate any code.

Uses of Sizeof()

It calculates the number of elements in the array.

The number of elements in the array is calculated by the formula –

sizeof(arr) / sizeof(arr[0])

Example

#include <stdio.h>
int main()
{
      int arr[] = { 1, 2, 3, 4, 7, 98, 0, 12, 35, 99, 14 }; // Create the array
      printf("The Number of elements in the array is:%lu ", sizeof(arr) / sizeof(arr[0]));
      return 0;
}

Output

The number of elements in the array is: 11

For dynamic memory allocation, if we want to allocate memory that can hold ten integers, it can be known by the sizeof() operator. Here, we use the function because we don’t know what integer size is decided on by the compiler.

Example

int* ptr = (int*)malloc(10 * sizeof(int));

 Itallocated space for 20 integers using the sizeof() function.


Related Topics

Length of an Array Function in C

In C, there is no built-in function to get the length of an array. However, there are a few ways you can determine the length of an array. It is necessary...

15 minutes read.

Pre-increment and Post-increment in C

The rich set of operators is supported by the c language. In c there are several operators used. The mathematical operations in the programming language are done with the operators...

4 minutes read.

Queue implementation in C

In the C programming language, the queue is the abstract concept that is similar to stacks. However, it is the part of the data structures that work opposite to that...

4 minutes read.

Merge Sort in C

The merge sort follows the principle of the divide and conquers algorithm. Firstly it divides the input of an array into two halves and then calls itself for the two...

4 minutes read.

Find median of 1D array using function in C

Introduction: Here, we discuss how we can find the median of a 1D array using a function in C. The median is the value in the middle of the sorted...

3 minutes read.

Simple hash() function in C

Introduction In this context, we briefly discuss HASH FUNCTION, HASHING or HASH TABLE in C. It is a function used to map data and mapped arbitrary sizes to the fixed-size values. The...

7 minutes read.

Heap Sort in C

In this tutorial, we will learn about heap sorting in C language, but before going to Heap sort, we have to know the concept of Complete Binary Tree. What is Complete...

8 minutes read.

Attributes in C

Attributes are one of modern C++ key features. It is the process by which initiator can add more information to the language instead of introducing new keywords for every attribute....

4 minutes read.

Compilation Process in C language

What is the Compilation Process?  The compilation is a method whereby the source code is converted into object code. It is achieved with compiler assistance. The compiler tests the source code for syntactic...

3 minutes read.

Ceil function in C

Introduction In the C Programming Language, the ceil function is a library function which is used to obtain the ceil value, i.e., it returns the smallest integer that is greater than...

4 minutes read.

fflush in C

In this article, we will understand what is fflush(), the need for fflush and fflush(stdin), and fflush(stdout). The fflush() function is used to clear the output buffer and move the buffered...

3 minutes read.

getc() function in C

Getc is one of the file handling technique in C. The Getc() is a C library function gets the next character or new characters  from the specific stream and supports...

4 minutes read.

Why C is a middle level language

The C programming language is generally referred to as a high level language but we glance through the backend of C, i.e the working of C as a programming language...

4 minutes read.

Data Structures And Algorithms in C

C language is one of the most flexible and simple languages. So, it is always better to learn any concept in C language compared to other languages. Let us look...

13 minutes read.

Multi-dimensional Arrays in C

Multi-dimensional Arrays in C The C programming allows the concept of multi-dimensional arrays. The data within the multidimensional arrays are stored in the tabular form, that is, in a row significant...

3 minutes read.

Hook() function in C

Use of hook () function in C Introduction:  The hook () is a function used in the C programming language. The basic concept of the hook() function is that it can remove the function...

3 minutes read.

Fee Management System in C

The concept is to split every operation into its very own characteristic. Software is made from all of the capabilities mixed with transfer cases. An example of the capabilities may...

5 minutes read.

Tower of Hanoi in C

What is Tower of Hanoi? The Tower of Hanoi is a gaming problem that was created in 1883 by a French mathematician named Édouard Lucas. The Tower of Hanoi temple in...

4 minutes read.

Control statement in C

What is a control statement? A control statement helps us to control the flow of the program. The control statement helps us to execute the program's instructions in a user-defined order....

8 minutes read.

Commenting in C

Commenting in C Commenting in the C language is used to give out the information about the lines of the code which are included. It is one of the things that...

3 minutes read.