write a program for size of a data type without using
sizeof() operator?
Answers were Sorted based on User's Feedback
Answer / govind279
#include<stdio.h>
int main()
{
int n;
int x,*p,*p1;/* here u can change the type */
p=&x;
p1=(p+1);
printf("size of x is : %d\n",n=(char *)(p1)-(char *)p);
}
Note:without type cast, it always gives 1.
i.e 1 int(4 chars), 1 float(4 chars),1 double(8
chars)etc...coz p+1 points to the next new location of same
type.
| Is This Answer Correct ? | 40 Yes | 9 No |
Answer / g
This code will work in TC with 2 warnings but can get result
void main()
{
char *Ptr1,*Ptr2;
float fl;
ptr1 = &fl;
ptr2 = (&fl+1);
printf("%u",ptr2-ptr1);
}
This is a way to get the size of data type...waiting for
any other way...
| Is This Answer Correct ? | 44 Yes | 26 No |
Answer / sunil
This has been solved in parts. I am not sure if there are
any better method merging it.
case 1. User passes a variable as the parameter.
eg: int n;
sizeof(n);
case 2. User passes a data type as the parameter.
eg: sizeof(int)
Solution
case 1: #define GetSize(x) (char*)(&x + 1) - (char*)&x
case 2:#define GetMySize(x) (char*)((x*)10 + 1) - (char*)10
| Is This Answer Correct ? | 15 Yes | 6 No |
Answer / abdur rab
#include <stdio.h>
struct node {
int x;
int y;
};
unsigned int find_size ( void* p1, void* p2 )
{
return ( p2 - p1 );
}
int main ( int argc, char* argv [] )
{
struct node data_node;
int x = 0;
printf ( "\n The size :%d",
find_size ( (void*) &data_node,
(void*) ( &data_node +
1 ) ) );
printf ( "\n The size :%d", find_size ( (void*) &x,
(void*) ( &x + 1 ) ) );
}
this will work for any data type
| Is This Answer Correct ? | 15 Yes | 8 No |
Answer / arun kumar mishra kiit univers
#include<stdio.h>
#include<conio.h>
void main()
{
float f1,*Ptr1,*Ptr2;
ptr1 = &fl;
ptr2 = (&fl+1);
printf("%u",(char *)ptr2-(char *)ptr1);
getch();
}
| Is This Answer Correct ? | 11 Yes | 4 No |
Answer / mukesh kumar singh
#include <iostream>
using namespace std;
struct node {
int x;
int y;
char *s;
};
int main()
{
node x,*p;/* here u can change the type */
p=&x;
cout<<"\n\nSize of node Is : "<<(char*)(p+1)-(char*)p;
return 0;
}
| Is This Answer Correct ? | 5 Yes | 2 No |
Answer / lalit kumar
#include "stdafx.h"
#include "stdio.h"
#include "conio.h"
int main()
{
char *a,*s, v='m';
a=&v;
s=a;
a++;
int intsize=(int)a-(int)s;
printf("%d",intsize);
getch();
return 0;
}
| Is This Answer Correct ? | 3 Yes | 0 No |
Answer / subham singh
1 #include<iostream>
2 using namespace std;
3 main()
4 {
5 int i;
6 int* p = &i;
7 int* q= p;
8 p++;
9 cout<<(char*)p-(char*)q<<endl;
10 }
11
~
| Is This Answer Correct ? | 2 Yes | 0 No |
Answer / anil arya
http://stackoverflow.com/questions/1219199/size-of-a-datatype-without-using-sizeof
| Is This Answer Correct ? | 2 Yes | 1 No |
What are the __date__ and __time__ preprocessor commands?
in C-programming language without using printf statement can we get output r not ? if yes how and if no also how ?
what is the output of the following program and explain the answer #include<stdio.h> exp() { main(5) } main(int a) { printf("%d",a); return; }
which is faster execution: loops or recursion?
main() { inta=10,b=20; a>=5?b=100:b=200; printf("%d ",b); }
Can the size of an array be declared at runtime?
What is the use of pragma in embedded c?
what is the different between data structure and data type?
Is Exception handling possible in c language?
what is the benefit of c30
the portion of a computer program within which the definition of the variable remains unchanged a) mode b) module c) scope d) none
Where local variables are stored in c?