标题:关于结构体声名的问题
只看楼主
honestgrubby
Rank: 1
等 级:新手上路
帖 子:47
专家分:0
注 册:2007-8-5
 问题点数:0 回复次数:8 
关于结构体声名的问题
假设有个结构体是这么声名:
typedef struct node{
.............
}listnode;
typedef listnode *linklist;
那么:
linklist m与listnode * m到底有什么不一样?
谢谢....
搜索更多相关主题的帖子: 声名 结构体 listnode linklist typedef 
2007-09-13 10:28
neverTheSame
Rank: 3Rank: 3
来 自:江西农业大学
等 级:新手上路
威 望:9
帖 子:1511
专家分:0
注 册:2006-11-24
得分:0 
linklist相当于 listnode*
所linklist m与listnode * m效果是一样的.

wap酷禾网(http://wap.),提供免费的、优质的、快捷的wap资源下载服务。
2007-09-13 10:54
honestgrubby
Rank: 1
等 级:新手上路
帖 子:47
专家分:0
注 册:2007-8-5
得分:0 

谢谢,,不过我老是觉得有点区别,说不上来.


向各位大侠学习!
2007-09-14 11:16
honestgrubby
Rank: 1
等 级:新手上路
帖 子:47
专家分:0
注 册:2007-8-5
得分:0 

那为什么我们在声名键表的头指针时都写成linklist head而不是写成listnode * head?
谢谢.


向各位大侠学习!
2007-09-14 11:39
honestgrubby
Rank: 1
等 级:新手上路
帖 子:47
专家分:0
注 册:2007-8-5
得分:0 

例如这个建键表的程序.
#include<stdio.h>
#include<malloc.h>
typedef char datatype;
typedef struct node
{
datatype data;
struct node * next;
}listnode;
typedef listnode * linklist;
listnode * p;
linklist createlist(void)
{
char ch;
linklist head;
listnode * p;
head=NULL;
ch=getchar();
while(ch!='\n')
{
p=(listnode *)malloc(sizeof(listnode));
p->data=ch;
p->next=NULL;
head=p;
ch=getchar();
}
return (head);

}
void main()
{

createlist();
}


向各位大侠学习!
2007-09-14 11:57
neverTheSame
Rank: 3Rank: 3
来 自:江西农业大学
等 级:新手上路
威 望:9
帖 子:1511
专家分:0
注 册:2006-11-24
得分:0 
以下是引用honestgrubby在2007-9-14 11:39:31的发言:

那为什么我们在声名键表的头指针时都写成linklist head而不是写成listnode * head?
谢谢.

其实,这都是一样的.你可以去试一下就知道了.


wap酷禾网(http://wap.),提供免费的、优质的、快捷的wap资源下载服务。
2007-09-14 13:19
honestgrubby
Rank: 1
等 级:新手上路
帖 子:47
专家分:0
注 册:2007-8-5
得分:0 

好的,谢谢.


向各位大侠学习!
2007-09-14 18:55
ChenMo
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:3
帖 子:481
专家分:10
注 册:2004-4-8
得分:0 
假设你的真名是“张小明”,
而你的网名是“honestgrubby”,
那么网名可以这样起:
typedef 张小明 honestgrubby;

你父母可能喜欢叫你“明明”:
typedef 张小明 明明;

或者你同学和朋友给你起了个外号叫“豹子头”,有侠气,有胆子,人够狠:
typedef 张小明 豹子头;

下面这条也是为你起豹子头外号的等价式子:
typedef honestgrubby 豹子头;

“张小明”是你,
“明明”也是你,
honestgrubby 也是你,
豹子头也是你。
你就一个,但是可能不同的人对你有很不同的称呼。

typedef 一般来说是为了简写,减少键盘输入量,或者是为了可读性。
例如这样一个例子:
struct TagStudent
{
char* name[20];
}

要使用以上的结构体的变量需要这样声明:
struct TagStudent somebody;

而使用其指针需要这样声明:
struct TagStudent *pSomebody;

这样可能好一些:
typedef char* string;
typedef struct TagStudent
{
string name[20];
}Student, *pStudent;

要使用该结构体的变量可以这样使用:
Student somebody;

指针则是如下:
pStudent pSomebody;

哪个好些?见人见智。

[此贴子已经被作者于2007-9-14 19:35:24编辑过]


欢迎加入 MVC 技术讨论群(新群:90093426)
2007-09-14 19:34
honestgrubby
Rank: 1
等 级:新手上路
帖 子:47
专家分:0
注 册:2007-8-5
得分:0 

谢谢CHEN兄耐心的解答,还有青锋侠!!!!!


向各位大侠学习!
2007-09-17 21:17



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-169570-1-1.html




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

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