C专家编程第五天

 typedef int x[10] 和 #define x int[10]的区别

1、可以对宏类型进行扩展,但是对typedef不能。

 #define APP_INT int[10]

unsigned APP_INT i; //没有问题 

2、在连续几个变量的声明中,用typedef定义的类型能够保证声明中所有的变量均为同一种类型,而用#define定义的类型无法保证。

typedef char *  CHAR_PTR;

CHAR_PTR buf_out, buf_in; //没有问题,buf_out和buf_in是同一种类型


typedef char * STRING; //用STRING表示char*类型

typedef void(*ptr_to_func) (int); //用ptr_to_func表示一个类型,该类型是指针类型,该指针指向一个参数为int,返回为void的函数。


C语言声明的例子,从C语言声明的优先级规则 ->C语言声明解析图 ->伪代码 ->代码。

每一步都逐渐深入和清晰

编程方案:

Struct token { char type;

Char string[MAXTOKENLEN];

}

//保存第一个标识之前的所有标记

Struct token stack[MAXTOKENS];

 

//保存刚读入的那个标记

Struct token this;

 

伪码:

Classify_string (字符串分类)

     查看当前的标记

     通过this.type返回一个值

Gettoken(取标记)

把下一个标记读入this.string

    如果是字母数字组合,调用classify_string

    否则,它必是一个单字符标记,this.type=该标记,用一个NUL结束this.string

Read_to_first_identifier (读至第一个标识)

   调用gettoken,并把标记压入到堆栈中,直到遇见第一个标识符

   打印标识符

   继续调用gettoken

 

解析程序:

Deal_with_function_args 处理函数参数

     当读取越过右括号 “)”后,打印“函数返回”

Deal_with_arrays 处理函数数组

     当你读取[size]后,将其打印并继续向右读取。

Deal_with_any_pointers 处理任何指针

     从堆栈读取*时,打印

Deal_with_declarator 处理声明器

If this.type is‘[‘   deal_with_arrays

If this.type is‘(‘   deal_with_function_args

Deal_with_any_pointers

 

With 堆栈里还有东西

  If 他是一个左括号 ‘(‘                

  将其弹出堆栈,并调用gettoken; 应该获得右括号‘(’

  Deal_with_declarator

  Else

     将其弹出堆栈并打印它


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 《C Primer第五版》是一本非常经典的C语言入门教材,它具有循序渐进、深入浅出的特点,适合初学者学习。其第五版电子版epub格式,可以随时随地拿着手机、平板或电子书阅读器学习。 epub(Electronic Publication)是开放标准的电子图书格式,它支持自适应屏幕大小、自适应字体以及多种视觉效果,便于用户阅读。同时,epub支持标记、书签、注释等个性化的学习方式,方便学习者根据自己的学习需求进行阅读。电子版还可以支持全文搜索,查找特定内容更加便捷。 C语言是一门基础而重要的编程语言,学好C语言对于未来编程生涯有着至关重要的作用。《C Primer第五版》作为一本非常好的C语言入门教材,通过详细的代码示例、理论讲解和练习题,帮助初学者系统学习C语言的基础知识,包括数据类型、指针、数组、函数、结构体等,使他们能够更好地理解和运用C语言。使用电子版epub不仅方便快捷,而且能够更好地提高学习效率和质量,是非常不错的学习方式。 ### 回答2: "C++ Primer第五版"是一本非常受欢迎的C++编程教材,它已经成为C++编程学习的参考书之一。这本书的作者是Lippman、Lajoie和Moo,他们都是C++领域的专家,其中Lippman是C++领域的知名人物,同时也是Moo的导师。 该书的第五版在原有的基础上进行了一些新的调整,包括更新了C++11、C++14和C++17的语言特性,并且加入了一些新的章节,如非非常基本的内容和高级主题,以及了解STL部分的更多内容。该书包含了大量的实例和练习,能够帮助读者轻松掌握C++的语言特性,具有很强的实用性和参考价值。 该书的epub电子版可以方便地在电子设备上进行阅读,使读者可以随时随地学习C++编程。同时,epub电子版也具有可搜索的功能,方便读者快速查找与学习有关的内容。因此,如果您想要学习C++编程,那么C++ Primer第五版epub电子版是您绝对不可错过的优质资源。 ### 回答3: c primer第五版是一本程序设计初学者的入门教材,涵盖了C语言的基础知识和编程技巧。该书分为18章,涉及了数据类型、控制结构、函数、指针、数组、字符串、结构体、文件操作等方面的知识点。作者通过简洁明了的语言和许多实例,让读者能够轻松掌握C语言编程的基础概念和基本编程技能。 该书的epub版电子书在很多电子书店都有销售,可以通过电子设备进行阅读。与纸质版不同的是,epub版电子书具有方便携带、存储空间小、可调整字体大小等便利特点。但是需要注意的是,阅读电子版书籍时要注意保护眼睛,避免长时间使用电子设备对眼睛造成伤害。 总之,c primer第五版epub版是一个非常实用的编程入门教材,对学习C语言编程的新手来说具有很大的帮助。无论是纸质版还是epub版,都是值得推荐和购买的。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值