| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 876 人关注过本帖, 1 人收藏
标题:一个单链表和二级指针的问题
取消只看楼主 加入收藏
甜脆的故事
Rank: 1
等 级:新手上路
帖 子:43
专家分:0
注 册:2013-3-20
结帖率:100%
收藏(1)
已结贴  问题点数:20 回复次数:3 
一个单链表和二级指针的问题
蛋疼了 在百度贴吧没有人理我 现在我来这里求救了  绝非伸手党
程序代码:
void ListInitiate(SLNode **head)
{
if((*head=(SLNode *)malloc(sizeof(SLNode)))==NULL)
exit(1);
(*head)->next=NULL;
}
这个是一个头文件里面的函数 下面那个是我写的测试程序
#include <stdio.h>
int main(void)
{
int **p,x=4;
*p=&x;//为什么 上面的函数能用*head 接受一个地址 为什么我的*p就不能接受地址呢?我写的程序可以编译 但是运行不了
printf("x=%d,*p=%x",x,*p);
return 0;
}
希望得到大家的帮助 如果可以的话 给我一个学习编程的qq群
搜索更多相关主题的帖子: head 百度贴吧 
2013-03-20 22:09
甜脆的故事
Rank: 1
等 级:新手上路
帖 子:43
专家分:0
注 册:2013-3-20
收藏
得分:0 
我先去上课了 放学回来再看 先谢谢大家  
2013-03-21 09:27
甜脆的故事
Rank: 1
等 级:新手上路
帖 子:43
专家分:0
注 册:2013-3-20
收藏
得分:0 
我好像差不多懂了 我把我的理解贴上来 给大家分享一下
程序代码:
void main(void)
{
    SLNode *head;// SLNode 是书本上之前定义好的结构 我在这里省略了
    int i,x;
    ListInitiate(&head);
    ......// 接下来的程序我省略了
}
//接下来是头文件里面函数的定义
ListInitiate(SLNoder **head)
{
    if((*head=(SLNode *)malloc(sizeof(SLNode)))==NULL)
        exit(1);
    (*head)->head=NULL;
}
//我之前有一个疑惑 就是为什么函数里面定义了一个**head 后可以直接使用 *head来接收值

//所以我做了如下的测试,自己编写了一个程序,
#include <stdio.h>
int main(void)
{
    int **p,x=4;
    *p=&x;
    printf("x=%d,*p=%x",x,*p);
    return 0;
}
//但是我发现运行到*p=&x 的时候程序就出错了 所以在这里定义了**p 却不能用像上面一样用*p来接收值使我感到困惑
//后来在大家的帮助下我发现了一个问题 ,ListInitiate(SLNoder **head) 在进行函数里面的语句之前 **head 已经得到了一个初值,
//这个初值就是主函数里面的语句  ListInitiate(&head);  给他的,所以他可以直接只用*head 来接收值,然而我定义的**p 没有初始化,所以就不能用*p来接收值
//再一次进行测试 就发现了答案
#include <stdio.h>
int main(void)
{
    int **p,x=4,*q;
    p=&q;
    *p=&x;
   

    printf("x=%d,&x=%x,*p=%x,**p=%d\n",x,&x,*p,**p);
    return 0;
}

2013-03-21 12:47
甜脆的故事
Rank: 1
等 级:新手上路
帖 子:43
专家分:0
注 册:2013-3-20
收藏
得分:0 
请大家对我的理解提出建议
2013-03-21 12:48
快速回复:一个单链表和二级指针的问题
数据加载中...
 
   



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

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