- 1、本文档共5页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
学数据结构对一些C语言语法的反思
学数据结构对一些C语言语法的反思
分类: c/c++2012-08-10 22:23700人阅读评论(0)收藏举报
第一个反思:typedef与结构体的反思
例1.1
[cpp] view plaincopyprint?
span style=font-size: 14px;typedef struct LNode {
int data;
struct LNode *next;
}LNode_A;/span
typedef struct LNode {
int data;
struct LNode *next;
}LNode_A;
这个是在学习链表时,其定义的一个结构体引起的反思。
typedef在C中的语法:给已有的数据类型(char int long)定义一个别名,例如 tyepdef int bit_4;
简化比较复杂的结构类型声明;此例子正事如此。
该代码应该可以看成三部分组成:
[cpp] view plaincopyprint?
span style=color: rgb(51, 51, 255); font-size: 14px;typedef/spanspan style=font-size: 14px; /spanspan style=color: rgb(255, 0, 0); font-size: 14px;struct LNode {
int data;
struct LNode *next;
}/spanspan style=color: rgb(255, 153, 255); font-size: 14px;LNode_A/spanspan style=font-size: 14px;;/span
typedef struct LNode {
int data;
struct LNode *next;
}LNode_A;
大红色部分为声明一个名为LNode的结构体类型,typedef “红色部分” LNode_A 这一句是给结构体LNode取个别名LNode_A.
那这样做的好处在哪里呢?
如果你要声明一个结构体变量,可以由原来的struct LNode a 简化为 LNode_A a;
则例1.1也可以写成:
[cpp] view plaincopyprint?
span style=font-size: 14px;typedef struct LNode {
int data;
LNode_A *next;
}LNode_A;/span
typedef struct LNode {
int data;
LNode_A *next;
}LNode_A;
另外,要注意“结构体类型定义”与“结构体变量定义”的区别
[cpp] view plaincopyprint?
span style=font-size: 14px;struct A{
......
......
};/span
struct A{
......
......
};
以上代码是结构体类型定义,定义{}中的结构为一个名词为“A”的数据类型;
[html] view plaincopyprint?
span style=font-size: 14px;struct {
.......
.......
}A;/span
struct {
.......
.......
}A;
以上代码是结构体变量定义,其中A为一个匿名的结构体数据类型的变量。A的本质是变量,是占用内存空间的。
更详细的结构体说明,参考链接/view/4a1f961859eef8c75fbfb384.html
第二个反思:指针作为函数参数传递
在链表章节中,一开始我很不解,为什么传递链表的头指针时,形参定义的是Linklist *L,而Linklist本身就是一个结构体指针,也就是说,用的是指向指针的指针;
看两端代码:
程序1:
[cpp] view plaincopyprint?
span style=font-size: 14px;void myMalloc(char *s) //我想在函数中分配内存,再返回
{
s=(char *) malloc(100);
}
void main()
{
char *p=NULL;
myMalloc(p); //这里的p实际还是NULL,p的值没有改变,为什么?
if(p) free(p);
} /span
void myMalloc(char *s) //我想在函数中分配内存,再返回
{
s=(char *) malloc(100);
}
void main()
{
char
您可能关注的文档
- 年分析协议液晶投影机维护包.doc
- 大学库学校信息--UniversityofChicago.doc
- 基于铂电阻的数字温度测量系统设计.doc
- 左手巴菲特.ppt
- 幼师《琴法》教学大纲.doc
- 盖梁模板支架验算书二三.doc
- 2013幼儿园大一班智力测验.doc
- 高中语文知识结构表-文科.doc
- 调度工程师潮流.doc
- 植树问题PPT新修.ppt
- 《GB/T 12668.7202-2024调速电气传动系统 第7-202部分:电气传动系统的通用接口和使用规范 2型规范说明》.pdf
- 《GB/T 15692-2024制药机械 术语》.pdf
- GB/T 15692-2024制药机械 术语.pdf
- 中国国家标准 GB/T 15692-2024制药机械 术语.pdf
- GB/T 19633.1-2024最终灭菌医疗器械包装 第1部分:材料、无菌屏障系统和包装系统的要求.pdf
- 中国国家标准 GB/T 19633.1-2024最终灭菌医疗器械包装 第1部分:材料、无菌屏障系统和包装系统的要求.pdf
- 《GB/T 19633.1-2024最终灭菌医疗器械包装 第1部分:材料、无菌屏障系统和包装系统的要求》.pdf
- 《GB/T 30117.1-2024非相干光产品的光生物安全 第1部分:通用要求》.pdf
- 《GB/T 33348-2024高压直流输电用电压源换流器阀 电气试验》.pdf
- GB/T 33348-2024高压直流输电用电压源换流器阀 电气试验.pdf
文档评论(0)