Difference between sizeof(int *) and sizeof(int) in C/C++
is commonly used operator in the
or
. It is a compile-time
that can be used to compute the size of its operand. The result of
sizeof()
is of
unsigned integral type
which is usually denoted by
. This operator can be applied to any data-type, including
such as integer and floating-point types, pointer types, or compound datatypes such as
,
etc.
int means a variable whose datatype is integer. sizeof(int) returns the number of bytes used to store an integer. int* means a pointer to a variable whose datatype is integer. sizeof(int*) returns the number of bytes used to store a pointer.
Since the
sizeof
operator returns the size of the datatype or the parameter we pass to it. So, the value it should return after passing a variable of (int *) to it:
- Since int* points to an address location as it is a pointer to a variable, So, the sizeof(int*) simply implies the value of the memory location on the machine, and, memory Locations themselves are 4-byte to 8-byte integer values.
- On a 32-bit Machine, sizeof(int*) will return a value 4 because the address value of memory location on a 32-bit machine is 4-byte integers.
- Similarly, on a 64-bit machine it will return a value of 8 as on a 64-bit machine the address of a memory location are 8-byte integers.
Now, the value it should return after passing a variable of (int) to it:
- Since int in an integer type variable. So, the sizeof(int) simply implies the value of size of an integer.
- Whether it is a 32-bit Machine or 64-bit machine, sizeof(int) will always return a value 4 as the size of an integer.
Below is the illustration of
sizeof operator
on
64-bit
machine:
C++
// C program to illustrate the // sizeof operator #include "bits/stdc++.h" using namespace std; // Driver Code int main() { // Print the sizeof integer cout << "Size of (int) = " << sizeof ( int ) << " bytes\n" ; // Print the size of (int*) cout << "Size of (int *) = " << sizeof ( int *) << " bytes\n" ; return 0; } |
C
// C program to illustrate the // sizeof operator #include <stdio.h> // Driver code int main() { // Print the sizeof integer printf ( "Size of (int) = %lu" " bytes\n" , sizeof ( int )); // Print the size of (int*) printf ( "Size of (int*) = %lu" " bytes\n" , sizeof ( int *)); return 0; } |
Size of (int) = 4 bytes Size of (int*) = 8 bytes