| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 669 人关注过本帖
标题:几个很简单的问题,真的。
只看楼主 加入收藏
ai8343512
Rank: 2
等 级:论坛游民
帖 子:75
专家分:94
注 册:2011-8-7
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:6 
几个很简单的问题,真的。
①对于一个链表程序段:
程序代码:
SLIST * creatlist(int *a)   
{
     SLIST *h, *p, *q;
     int i;
   
     h = p = (SLIST *)malloc(sizeof(SLIST));   //这是不是意味着h伴随着p的变化而变化?
   
     for(i=0; i<N; i++)
     {
         q = (SLIST *)malloc(sizeof(SLIST));
         q->data = a[i]; 
         p->next = q;    
         p = q;            
    }                   
     p->next = 0;        
   
     return h;                                 //这个函数是如何通过h传回头指针的?我怎么觉得h在跟着p一起变?
 }


②在二级考试题上看到一个这样的信息:
    不带头结点的单项链表结构;
    头指针直接指向第一个结点。
问:链表不是定义第一个结点是头结点,第二个结点是首结点吗?怎么还会有第一个结点不是头结点的情况?

③对于共用体方面的东西:
在书上共用体这一点中看到这样一句话:
共用体变量所占的内存长度等于变量中所占字节数最长的成员的长度,下面这个程序段字节最长的成员的长度时8个字节,可,书上写共用体占四个字节,为什么?如下:
程序代码:
union un
{
    int i;
    float x;
}s1, s2, *p;

④还有一道这样的公用体的题目,我表示不知道它是怎么算的:
程序代码:
# include <stdio.h>

union un
{
    int i;
    char c[2];
}

int main(void)
{
    union un x;

    x.c[0] = 10;
    x.c[1] = 1;

    printf("\n%d", x.i);

    return 0;
}

输出的答案是266.过程是x.i = x.c[1] * 256 + x.c[0] = 266.这里面为什么c[1]要乘以一个字节所有可能出现的情况,而c[0]却不用乘?
搜索更多相关主题的帖子: 链表程序 
2011-08-22 16:55
voidx
Rank: 12Rank: 12Rank: 12
来 自:邯郸
等 级:火箭侠
帖 子:1250
专家分:3538
注 册:2011-4-7
收藏
得分:5 
1. 你的感觉是错的,h 不会随着 p 变化。这不是数学。

2. 头结点可有可无。所谓头结点是指链表的第一个且不存放数据的结点。它的作用是为了方便链表操作。
   如果第一个节点存放了数据,他就不是头结点了。

3. int 和 float 长度都是 4 字节。你又理解错了

4. 这个,楼主你自己想一下吧
2011-08-22 18:59
ai8343512
Rank: 2
等 级:论坛游民
帖 子:75
专家分:94
注 册:2011-8-7
收藏
得分:0 
回复 2楼 voidx
前两个结合你给我的提示和书上的讲解大部分明白了,可是还是有一点不明白,头结点是一个没有数据域的结点,但同样含有两个域。那头指针呢?头指针仅仅是一个指针,没有两个域,可为什么定义头指针的时候还是用结构体来定义?那这个指针不就同样拥有结构体给予它的两个域了?这不符合头指针的概念啊???

思考不应该由他人来指导,会思考的人不需要你来提醒他去思考一个简单的问题。
2011-08-22 21:01
ai8343512
Rank: 2
等 级:论坛游民
帖 子:75
专家分:94
注 册:2011-8-7
收藏
得分:0 
我顶!!!!!!!!!

思考不应该由他人来指导,会思考的人不需要你来提醒他去思考一个简单的问题。
2011-08-23 08:16
A13433758072
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:广东潮州
等 级:小飞侠
威 望:1
帖 子:1182
专家分:2784
注 册:2010-7-22
收藏
得分:5 
3. int 和 float 长度都是 4 字节。你又理解错了 →_→这标准是看编译器而定的TC与VC6.0是不同的

一步一个脚印...............................默默地前进.....
诚邀乐于解答c菜鸟问题,的热心网友加入,  QQ群38490319
2011-08-23 08:26
ai8343512
Rank: 2
等 级:论坛游民
帖 子:75
专家分:94
注 册:2011-8-7
收藏
得分:0 
就算第三个问题我理解错了吧,那第四个问题呢?我觉得如果我能够理解第四个问题,那么第三个问题也可以解决。
还有就是三楼剩下的问题……麻烦各位师傅了……

思考不应该由他人来指导,会思考的人不需要你来提醒他去思考一个简单的问题。
2011-08-23 08:30
voidx
Rank: 12Rank: 12Rank: 12
来 自:邯郸
等 级:火箭侠
帖 子:1250
专家分:3538
注 册:2011-4-7
收藏
得分:10 
回复 3楼 ai8343512
所谓头指针就是指向头结点的指针而已,没有头结点自然也就没有头指针了。
假设 p 为一链表的头指针,那么 p->next 就是这个链表的第一个结点。
如果不用结点结构体类型来定义 p 的话,就不存在 p->next 了,不过,你也可以专门为头结点定义一个结构体,但是一般不那么做

[ 本帖最后由 voidx 于 2011-8-24 17:17 编辑 ]
2011-08-24 15:36
快速回复:几个很简单的问题,真的。
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.027120 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved