请教sizeof()里面的值?
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
- 评论列表(网友评论仅供网友表达个人看法,并不表明本站同意其观点或证实其描述)
-
|