×

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

Snake Game in C

Snake game in C is basic desktop console program which was created in 1970’s. It is an old classic game which was played by every child across the world. This...

4 minutes read.

Ceil and Floor in C

In arithmetic, a rational number is a number that can be expressed as the quotient p/q of two integers. Where q is zero. The set of rational numbers includes all...

6 minutes read.

Assert() Function in C

Assert (): In C, the statements are executed with the exit statement. In C language declare, and it tests the condition parameters. If the statement executed will be false, it shows...

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.

Math functions in C

Math functions in C: In the C programming language, the compiler allows the developer to perform mathematical operations through the header’s functions, represented by <math.h>. The <math.h> header defines various mathematical...

3 minutes read.

If else Programs in C Programming

If else Programs in C programming The if-else statement in C is based on some particular conditions to perform the operations. If and only if the given condition is valid, the operations listed in...

4 minutes read.

Self-referential structure in C

Self-referential structure in C A self-referential structure is a structure that can have members which point to a structure variable of the same type. They can have one or more pointers...

3 minutes read.

Format Specifier in C

Format Specifier in C Format specifiers can be described as an operator that is used to print the data referred by any object or variable in combination with the printf ()...

3 minutes read.

Break, continue and goto statement in C

Break statement Break statement is used to break the process of a loop (while, do while and for) and switch case. Syntax: break; Example 1 while(test Expression) { // codes if(condition for break){ break; } // codes } Example 2 For(int it, condition,...

1 minute read.

Types of Array in C

What is an Array? One value can be stored in a variable at once. How many variables will you need if you have 100 values? Well, the answer isn't 100. It...

14 minutes read.

C Array

An array is a collection of elements that are used to hold the fixed number of values of the same type. We cannot change the size and type of array...

2 minutes read.

Pascal Triangle in C

The pascal triangle in c is an array of binomial coefficients in triangular form. Here the nth row contains the binomial coefficient of ncr.In a pascal triangle, every number is...

2 minutes read.

Two-Dimensional array in C

What is an Array? The collection of a fixed number of elements of homogeneous data types that are stored in contiguous locations in the memory is known as an array. Only...

6 minutes read.

How to move a text in C

A text can be moved to the desired location in the output based on the coordinates provided in the gotoxy() function. What is gotoxy() function? In C language, gotoxy() is a pre-defined...

3 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.

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.

Malloc function in C

When the user or programmer does not know how much memory space is needed in the application, it a needs dynamic memory allocation during runtime. Dynamic memory allocation helps us to...

4 minutes read.

C Program to Find the Largest Number using Ternary Operator

In this tutorial, we will write some program to determine which of the provided integers is larger using the ternary operator, also known as the conditional operator in C. Ternary Operator: The ternary...

3 minutes read.

Difference between If and Switch Statement in C

Key Contrast: In the event that assertion is utilizes a Boolean articulation to execute the capability and can frequently be utilized to really look at various circumstances all at once.  The change...

4 minutes read.

How to convert a string to hexadecimal in C

Converting a character array or any string to its respective hexadecimal form is simple. The only thing we have to do is to follow the below steps. Take each character from...

3 minutes read.