【发布时间】:2015-10-23 22:31:11
【问题描述】:
名单:
struct list{
int Id;
short Value;
struct list *next;
};
所以我想通过使用节点的地址来找出列表的大小(不使用 sizeof)。每个节点彼此不同 24 字节。这是我为此目的编写的代码:
struct list *tmp;
int sum=0;
for(tmp=ptr; tmp!=NULL; tmp=tmp->next){
sum = sum + tmp->next - tmp;
}
printf("\nThe size of the list in bytes is:%d", sum);
tmp 是指向列表的指针。 ptr 是指向指向头部的列表的指针。我使用 tmp 是因为稍后我的代码需要 ptr。当我执行上述操作时,我得到:列表的大小(以字节为单位)是:143132....。数字每次都不一样,但不是我想要的。
【问题讨论】:
-
为什么代码不用
sizeof就不用sizeof来查找大小? -
我要创建一个项目,我被要求不要使用它。
-
奇怪的要求。代码可以通过找到最小的绝对差并乘以单元格数来报告最大大小。祝你好运,不被允许使用
sizeof。向那些指导的人询问原因可能很有用。
标签: c pointers linked-list