请教sizeof()里面的值?

发表于:2007-05-25来源:作者:点击数: 标签:structSizeof请教面的Example
example:struct in_addr in_valchar 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(你打反了)是复制
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);
}

原文转自:http://www.ltesting.net

评论列表(网友评论仅供网友表达个人看法,并不表明本站同意其观点或证实其描述)