There are some bewildering sizeof() questions I have in my mind. Could anyone shed some light on this?
Code:
int main() {
printf("%d\n", sizeof(main)); // Ans: 1
}
That is, the sizeof() a function identifier though it is treated internally as a pointer gives 1 byte always, why?
Also, sizeof(void) gives output 1 where as sizeof(void*) is 4 bytes on my Ubuntu 8.04 (32-bit) machine. I am using gnu gcc compiler. Whether this is compiler dependent?
Also, the following program compiles perfectly for me without any error
Code:
int main() {
void *vptr = (void *) malloc(sizeof(void)); // (or) malloc (sizeof(void*));
vptr++; // what it is incremented to?
}
And, why the output of the following program is still 10?
Code:
int main() {
int i = 10;
printf("size is %d bytes\n", sizeof(i++)); // Ans: size is 4 bytes
printf("%d\n", i); // Ans: 10
}
we know that sizeof never returns zero when used with structure
then why in this case it is returning zero
struct foo
{
char c;
};
void main()
{
struct foo f;
cout<<sizeof(f);
}
i am working on solaris 5.8
isn't the above function should return the size of empty structure (7 Replies)
Hello All,
I am very new to UNIX. Please help me to find answers of below questions.
1.A script is saved with name ls. When we execute the script what it will execute?
a) Will execute ls command
b) Will execute the script
c) Will execute script or command depends on the path
... (2 Replies)
Hi ,
I m beginner for Unix and i want to use FIFO in my 2 Scripts . I want 1 script to read data from FIFO and other will write into FIFO.
Despite reading so many articles/posts i am still unable sunchronize my scripts.
My doubts are
1> Do We require both scripts as daemons to use... (0 Replies)
Hi All,
is it possible to find out the size of an array of structures ( without using 'sizeof' operator). The condition is we have the array of structure instant but we are not aware of the elements inside the structure.
Can someone help me out?
Thanks in advance. (18 Replies)
The below code throws the error, since the size of x = 19 is not passed to the cstrCopy function.
using namespace std;
static void cstrCopy(char *x, const char*y);
int main ()
{
char x;
const string y = "UNIX FORUM";
cstrCopy(x,y.c_str());
return 0;
}
void cstrCopy(char *x,... (3 Replies)
Hi,
I have defined the class and call the sizeof(object to class) to get the size.
# include <iostream>
# include <iomanip>
using namespace std;
class sample
{
private:
int i;
float j;
char k;
public:
sample()
{
} (2 Replies)
Hello,
I'm new to HP-UX and I'm not sure about some concepts related to resizing fs's under this OS.
First of all I'm only asking about resizing ONLINE, it means, without having to umount the fs nor rebooting, etc.
Q1. I've read that in order to resize a fs online there are 2 requirements:... (3 Replies)
Hai
how to find size of a file??
ex : /home/kiran/pdk/sample/calibre this is a path
In that I have to find size of a files in side a calibre(it is the folder) like .results or .summary (1 Reply)
Ignoring other considerations for a moment and in general ...
Would there be a difference in result (dot oh or execution) of:
A.
strncpy( a, b, sizeof(a) );
vs.
B.
c = sizeof(a);
strncpy( a, b, c );
My general understanding is (at least I think my understanding is) that... (10 Replies)
Discussion started by: GSalisbury
10 Replies
LEARN ABOUT LINUX
offsetof
OFFSETOF(3) Linux Programmer's Manual OFFSETOF(3)NAME
offsetof - offset of a structure member
SYNOPSIS
#include <stddef.h>
size_t offsetof(type, member);
DESCRIPTION
The macro offsetof() returns the offset of the field member from the start of the structure type.
This macro is useful because the sizes of the fields that compose a structure can vary across implementations, and compilers may insert
different numbers of padding bytes between fields. Consequently, an element's offset is not necessarily given by the sum of the sizes of
the previous elements.
A compiler error will result if member is not aligned to a byte boundary (i.e., it is a bit field).
RETURN VALUE
offsetof() returns the offset of the given member within the given type, in units of bytes.
CONFORMING TO
C89, C99, POSIX.1-2001.
EXAMPLE
On a Linux/i386 system, when compiled using the default gcc(1) options, the program below produces the following output:
$ ./a.out
offsets: i=0; c=4; d=8 a=16
sizeof(struct s)=16
Program source
#include <stddef.h>
#include <stdio.h>
#include <stdlib.h>
int
main(void)
{
struct s {
int i;
char c;
double d;
char a[];
};
/* Output is compiler dependent */
printf("offsets: i=%ld; c=%ld; d=%ld a=%ld
",
(long) offsetof(struct s, i),
(long) offsetof(struct s, c),
(long) offsetof(struct s, d),
(long) offsetof(struct s, a));
printf("sizeof(struct s)=%ld
", (long) sizeof(struct s));
exit(EXIT_SUCCESS);
}
COLOPHON
This page is part of release 3.27 of the Linux man-pages project. A description of the project, and information about reporting bugs, can
be found at http://www.kernel.org/doc/man-pages/.
GNU 2008-07-12 OFFSETOF(3)