| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 907 人关注过本帖
标题:刚学数据结构,有段代码看不懂 求破 。。。
只看楼主 加入收藏
Cai_xw1993
Rank: 2
等 级:论坛游民
威 望:1
帖 子:55
专家分:30
注 册:2011-9-5
结帖率:100%
收藏
已结贴  问题点数:2 回复次数:13 
刚学数据结构,有段代码看不懂 求破 。。。
刚自己学数据结构,看到这样一段代码,蒙了,求解释下
程序代码:
const maxzise = 顺序表的容量;
typedef struct
{datatype data[maxsize];

 int last;
}sqlist;
sqlist L;
2014-05-25 20:05
funyh250
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:26
帖 子:290
专家分:1573
注 册:2013-12-25
收藏
得分:1 
定义了一个sqlist的 结构体  和 实例L

学习是大事   吃喝拉撒睡是小事   其他的那都不是事
2014-05-25 22:16
yangfrancis
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:贵宾
威 望:141
帖 子:1510
专家分:7661
注 册:2014-5-19
收藏
得分:0 
不懂,也来学习学习。
2014-05-25 22:34
Cai_xw1993
Rank: 2
等 级:论坛游民
威 望:1
帖 子:55
专家分:30
注 册:2011-9-5
收藏
得分:0 
回复 2 楼 funyh250
意思是否: L为结构体sqlist的对象? 请问除了sqlist之外还有其他结构体吗? 还有 typedef struct  为什么这里不用函数名?
2014-05-26 21:26
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:1 
typedef是C的語法,它定義一個結構(typedef struct直譯即可)作爲某種數據類型(C的自定義數據類型能力就體現在這裏),後面的花括號就是這種數據類型的具體結構,然後給這種數據類型起一個名稱,命名爲sqlist,類似int這種名稱即是這樣來的。然後在下一行,就使用這種數據名稱聲明一個數據變量。你把sqlist當作int、double這類東西看就是了。

在C++,是不需要使用typedef字眼的,直接定義一個命名的struct或class,就已經是數據類型了。

授人以渔,不授人以鱼。
2014-05-26 21:34
Cai_xw1993
Rank: 2
等 级:论坛游民
威 望:1
帖 子:55
专家分:30
注 册:2011-9-5
收藏
得分:0 
回复 5 楼 TonyDeng
还是不太能理解,不过好像又懂了些什么,我说下我理解的,麻烦看有什么地方时错误的。
因为我现在学的是C的数据结构。
typedef struct
{datatype data[maxsize];
int last;
}sqlist;
这是定义了一个sqlist的数据结构。
这里的sqlist是一个标示符还是关键字(因为表示如果是标示符的话就能自定义的,而关键字是不能改的)
然后 sqlist L;意思是定义的一个sqlist类型的L   是这样子理解吗?
就像int a; 一样,定义一个int 类型的 对象a;
最后typedef  在C里面是一定要的吗?
然后如果在C++里面就不用?
2014-05-26 22:01
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
是的。嚴格地說,這叫定義一個“類型”,如果你看國外的教科書,裏面經常提到的類型(type),就是這種東西了,不管是内置的原始數據類型,還是自定義的struct/class,都統一叫類型。typedef,是type define的縮連寫,即類型定義。sqlist是類型的名字,是標識符(其實int、float、double等也是標識符,不是關鍵字,不過標準宣佈它們是關鍵字罷了)。在實際的編程中,標識符和關鍵字,其實不用區分得太嚴格,因爲對C/C++這種以能自創數據類型爲榮的語言來説,類型一旦定義,就如固有的類型處於同等地位(在C#中,更是把内置數據類型也封包爲對象類型),無非是内置與否的區別。在VS的IDE代碼編輯器中,我們可以看到定義類型之後,在往後的代碼中,這種類型的顔色與内置數據類型是一樣的,都是綠色。

[ 本帖最后由 TonyDeng 于 2014-5-26 22:23 编辑 ]

授人以渔,不授人以鱼。
2014-05-26 22:15
Cai_xw1993
Rank: 2
等 级:论坛游民
威 望:1
帖 子:55
专家分:30
注 册:2011-9-5
收藏
得分:0 
回复 6 楼 Cai_xw1993
2014-05-26 22:21
Cai_xw1993
Rank: 2
等 级:论坛游民
威 望:1
帖 子:55
专家分:30
注 册:2011-9-5
收藏
得分:0 
回复 7 楼 TonyDeng
今晚学到了不少东西,谢谢你的解答,自学有时候就是不知道到底懂得是否是正确的。经过你一番解说,感觉明白了很多东西。以后可能很多不懂,希望不吝赐教!
2014-05-26 22:22
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
其實C,本身是很小的,它連基本的輸入輸出功能都沒有,諸如標準庫這樣的東西,是前人替我們定義好一大堆常用的類型、寫好一大堆常用的函數(其中包括必需的輸入輸出函數,這也是C庫針對同一需求往往提供有多種解決函數的原因),這些東西,被收錄到標準庫中,就成了所謂的標準,教材也把這種別人擴充寫出來的東西當成是C語言内置的知識來講,才把C語言弄得神秘兮兮、高深莫測。正如《老子》說的,萬物生於無,最小的東西才是最玄妙的,一百來種基本元素構成宇宙無窮無盡的物質,龐大的幾何學誕生於寥寥幾條公理,就是這種原理的體現。C語言正因爲本身很小,才能被擴充爲最複雜的體系,才有最充分的自由度,我們學的時候,不要被那些人家擴充過的東西牽著走,最關鍵是學會如何用最基本的東西逐漸構造複雜的東西,那樣你才是真正自由的。自造和擴充數據類型,就是那些偉大的公理之一,不要被int、float、double等束縛住,把它們視爲一體,看待事物的眼光自然擴闊許多,到你隨心所欲地通過構造數據類型來描述事物的時候,就得道了。

授人以渔,不授人以鱼。
2014-05-26 22:42
快速回复:刚学数据结构,有段代码看不懂 求破 。。。
数据加载中...
 
   



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

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