当前时区为 UTC + 8 小时



发表新帖 回复这个主题  [ 6 篇帖子 ] 
作者 内容
1 楼 
 文章标题 : [问题]c语言的小问题
帖子发表于 : 2008-06-22 22:01 

注册: 2008-06-10 17:20
帖子: 29
送出感谢: 1
接收感谢: 0 次
请高手看一下,为什么会不行,程序如下:
#include "stdio.h"
#include "malloc.h"
#define SIZE 10;
typedef struct node{
char data[10];
struct node *next;
}linknode;
typedef struct queueNode{
struct node *front,*rear;
}linkqueue;

linkqueue *q;

void creat(){
q->front=(linknode *)malloc(sizeof(linknode)); //这句显示出错
};
main(){
creat();
}
我是用netbeans写的c语言程序,编译器是gcc。
程序出输出的结果是 : Segmentation fault
为什么会这样啊。。我在xp里面用turbo c就可以运行。。
是不是ubuntu下的c语言跟xp下的有差别啊。。[/img]


页首
 用户资料  
 
2 楼 
 文章标题 :
帖子发表于 : 2008-06-22 22:27 

注册: 2005-09-28 9:03
帖子: 243
送出感谢: 0 次
接收感谢: 0 次
q指针还没有被正确初始化,当然会出错,应该先为q指针分配内存空间

代码:
q = (linkqueue *)malloc(sizeof(linkqueue));
q->front=(linknode *)malloc(sizeof(linknode));


如果你不需要动态分配,那么可以把q声明为一个变量而不是指针

代码:
linkqueue q;
q.front=(linknode *)malloc(sizeof(linknode));


跟上次某人犯了同一个错误 8)


页首
 用户资料  
 
3 楼 
 文章标题 :
帖子发表于 : 2008-06-22 22:39 

注册: 2008-06-10 17:20
帖子: 29
送出感谢: 1
接收感谢: 0 次
不愧是高手。。。谢了。。


页首
 用户资料  
 
4 楼 
 文章标题 :
帖子发表于 : 2008-06-22 22:39 
头像

注册: 2007-10-14 0:50
帖子: 306
地址: GUCAS
送出感谢: 0 次
接收感谢: 1
代码:
linkqueue *q;

没有初始化。
代码:
#include "stdio.h"
#include "malloc.h"
#define SIZE 10;
typedef struct node{
char data[10];
struct node *next;
}linknode;
typedef struct queueNode{
struct node *front,*rear;
}linkqueue;

linkqueue *q;

void creat(){
q = (linkqueue*)malloc(sizeof(linkqueue));
q->front=(linknode *)malloc(sizeof(linknode)); //这句显示出错
};
main(){
creat();
}


_________________
OS: Debian GNU/Linux
Version: lenny
Kernel: 2.6.36
Xorg: 1.4.2
CPU: Intel(R) Core(TM)2 Duo CPU E8400 @ 3.00GHz
HD: 320G SATA
Memory: 2G DDRIII
Graphics:Mobility Radeon HD 3450


页首
 用户资料  
 
5 楼 
 文章标题 :
帖子发表于 : 2008-07-06 11:53 

注册: 2007-10-17 10:18
帖子: 21
送出感谢: 0 次
接收感谢: 0 次
可以先别把q声明成指针.这样貌似好理解点!
代码:
#include "stdio.h"
#include "malloc.h"
#define SIZE 10;
typedef struct node{
char data[10];
struct node *next;
}linknode;
typedef struct queueNode{
struct node *front,*rear;
}linkqueue;

linkqueue q;

void creat(linkqueue *q){
q->front=(linknode *)malloc(sizeof(linknode)); 
};
main(){

   creat(&q);
}


页首
 用户资料  
 
6 楼 
 文章标题 :
帖子发表于 : 2008-07-06 21:22 
头像

注册: 2006-09-21 14:28
帖子: 2376
送出感谢: 0 次
接收感谢: 0 次
一看就知道不看C之父的书的,一看就知道是喝M$尿的,一看就知道你老师也是是喝M$尿的。

http://wiki.ubuntu.org.cn/index.php?tit ... iant=zh-cn


_________________
http://lee.youxu.info/


页首
 用户资料  
 
显示帖子 :  排序  
发表新帖 回复这个主题  [ 6 篇帖子 ] 

当前时区为 UTC + 8 小时


在线用户

正在浏览此版面的用户:没有注册用户 和 3 位游客


不能 在这个版面发表主题
不能 在这个版面回复主题
不能 在这个版面编辑帖子
不能 在这个版面删除帖子
不能 在这个版面提交附件

前往 :  
本站点为公益性站点,用于推广开源自由软件,由 DiaHosting VPSBudgetVM VPS 提供服务。
我们认为:软件应可免费取得,软件工具在各种语言环境下皆可使用,且不会有任何功能上的差异;
人们应有定制和修改软件的自由,且方式不受限制,只要他们自认为合适。

Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
简体中文语系由 王笑宇 翻译