首页 > C/C++语言 > C/C++基本语法 > 请教sizeof()里面的值
2006
12-27

请教sizeof()里面的值









请教sizeof()里面的值?


< = src="/AD/200510/3.js">





< = src="/AD/200510/2.js">
example:

struct in_addr in_val

char addrptr[BUFSIZE];

mmcpy(addrptr,&in_val,sizefo(struct in_addr));

connect(sockfd,(socket (const sturct sockaddr *)&serv,sizeof(serv));



mmcpy(addrptr,&in_val,sizefo(struct in_addr));
这个sizeof(你打反了)是复制过程,长度是struct in_addre长度
connect(sockfd,(socket (const sturct sockaddr *)&serv,sizeof(serv));
这个sizeof是serv这个里面结构的长度,因为实际中很可能某些结构中有空的项
比如gethostname(好象是这个函数得到主机的dns信息,忘记了……)
它里面的结构中允许主机的ip和主机名是多项的,但是如果不满的话就是空,那么长度可能比原来的小
所以是用sizeof 实际结构长度
我理解是酱紫的



devel :

谢谢!!我懂了。。用数据类型和用该数据类型的变量的结果一样。
以下的程序是打印出你的系统的数据类型占用的内存空间。

struct A {
int a;
};

int
main(void)
{
    printf(“int                %d\n”,sizeof(int));
    printf(“int *              %d\n”,sizeof(int *));
    printf(“unsigned           %d\n”,sizeof(unsigned));
    printf(“unsigned int *      %d\n”,sizeof(unsigned int *));

    printf(“long               %d\n”,sizeof(long));
    printf(“long *             %d\n”,sizeof(long *));
    printf(“unsigned long       %d\n”,sizeof(unsigned long));
    printf(“unsigned long *     %d\n”,sizeof(unsigned long *));

    printf(“char               %d\n”,sizeof(char));
    printf(“char *             %d\n”,sizeof(char *));
    printf(“unsigned char       %d\n”,sizeof(unsigned char));
    printf(“unsigned char *     %d\n”,sizeof(unsigned char *));
    
    printf(“struct A            %d\n”,sizeof(struct A));
    printf(“struct A *          %d\n”,sizeof(struct A *));
    return(0);
}


留下一个回复