1.2 C语言的早期体验

1)C语言的基本数据类型直接与底层硬件相对应。C语言不存在内置的复数类型。C语言一开始不支持浮点类型,直到硬件系统能够直接支持浮点数之后才增加了对它的支持。

2)auto关键字显然是摆设。这个关键字只对创建符号表入口的编译器设计者有意义。它的意思是“在进入程序块时自动进行内存分配”,其他程序员不必操心auto这个关键字,它是缺省的变量内存分配模式。

3)表达式中的数组名可以看作是指针。

4)float被自动扩展为double。尽管ANSI C中情况不再如此,但最初浮点数常量的精度都是double型的,所有表达式中float变量总被自动转换成double。

5)不允许嵌套函数(函数内部包括另一函数的定义)。

6)register关键字。这个关键字能给编译器设计着提供线索,就是程序中的哪些变量属于热门(经常被使用),这样就可以把它们存放到寄存器中。但使用register关键字,虽然简化了编译器,却把包袱丢给了程序员。

1.3 C预处理器

它实现了三个主要功能:

1)字符串替换:#define MAX_LENGHT 1000

2)头文件包含:一般性的声明可以被分离到头文件中,并且可以被许多源文件使用。

3)通用代码模板的扩展:#define max(x, y)      x>y?x:y

在宏的扩展中,空格会对扩展的结果造成很大的影响。对宏的使用,要适量使用。

1.9 ANSI C标准

1)实参char* s与形参const char* p应该是相容的,标准库中所有的字符串处理函数都是这样子的。那么,为什么实参char **argv与形参const char **p不能相容?

赋值是否合法,必须满足下列条件之一:

a. 两个操作数都是指向有限定符或无限定符的相容类型的指针,左边指针指向的类型必须具有右边指针所指向类型的全部限定符!

情况1:

char *p = "akakka";

const char *ch;

ch = p;  //ok, char 和 char 是相容的类型,ch具有p的限定符(无)

情况2:

const float *f;   //f是一个指针,f指向const float。

const char **ch;

char **ca;

由于char **和const char **都是没有限定符的指针类型,但是它们指向的类型不一样,前者指向char*,而后者指向const char*,因此它们是不相容的。

《C专家编程》第一天的更多相关文章

  1. 菜鸟Python学习笔记第一天:关于一些函数库的使用

    2017年1月3日 星期二 大一学习一门新的计算机语言真的很难,有时候连函数拼写出错查错都能查半天,没办法,谁让我英语太渣. 关于计算机语言的学习我想还是从C语言学习开始为好,Python有很多语言的 ...

  2. 从0开始搭建SQL Server AlwaysOn 第一篇(配置域控)

    从0开始搭建SQL Server AlwaysOn 第一篇(配置域控) 第一篇http://www.cnblogs.com/lyhabc/p/4678330.html第二篇http://www.cnb ...

  3. TODO:即将开发的第一个小程序

    TODO:即将开发的第一个小程序 微信小程序是一种全新的连接用户与服务的方式,它可以在微信内被便捷地获取和传播,同时具有出色的使用体验.个人理解小程序是寄宿在微信平台上的一个前端框架,具有跨平台功能, ...

  4. ExtJS 4.2 第一个程序

    本篇介绍如何创建一个ExtJS应用程序.并通过创建目录.导入文件.编写代码及分析代码等步骤来解释第一个ExtJS程序. 目录 1. 创建程序 1.1 创建目录建议 1.2 实际目录 1.3 index ...

  5. 《Django By Example》第一章 中文 翻译 (个人学习,渣翻)

    书籍出处:https://www.packtpub.com/web-development/django-example 原作者:Antonio Melé (译者注:本人目前在杭州某家互联网公司工作, ...

  6. ASP.NET MVC with Entity Framework and CSS一书翻译系列文章之第一章:创建基本的MVC Web站点

    在这一章中,我们将学习如何使用基架快速搭建和运行一个简单的Microsoft ASP.NET MVC Web站点.在我们马上投入学习和编码之前,我们首先了解一些有关ASP.NET MVC和Entity ...

  7. Python爬虫小白入门(四)PhatomJS+Selenium第一篇

    一.前言 在上一篇博文中,我们的爬虫面临着一个问题,在爬取Unsplash网站的时候,由于网站是下拉刷新,并没有分页.所以不能够通过页码获取页面的url来分别发送网络请求.我也尝试了其他方式,比如下拉 ...

  8. spring boot 实战:我们的第一款开源软件

    在信息爆炸时代,如何避免持续性信息过剩,使自己变得专注而不是被纷繁的信息所累?每天会看到各种各样的新闻,各种新潮的技术层出不穷,如何筛选出自己所关心的? 各位看官会想,我们是来看开源软件的,你给我扯什 ...

  9. 为什么很多SaaS企业级产品都熬不过第一年

    因工作缘由,笔者与周边数位SaaS企业级应用的创始人.运营负责人有过深入接触,发现一个有趣的现象:刚起步时,蓝图远志.规划清晰,但是一路下来,却异常艰难,有些甚至熬不过第一年,就关门歇业. 2015年 ...

  10. (转)从0开始搭建SQL Server AlwaysOn 第一篇(配置域控+域用户DCADMIN)

    原文地址: http://www.cnblogs.com/lyhabc/p/4678330.html 实验环境: 准备工作 软件准备 (1) SQL Server 2012 (2) Windows S ...

随机推荐

  1. IDEA14下配置SVN

    本来以为是很简单的事情,没想到也浪费我有一会的时间,中间也出现了多多少少的问题. 1.在官网下载SVN,版本要为1.8,切忌不能1.9,否则会出错. 在安装SVN的时候,不能一路下一步,我们要安装命令 ...

  2. 高级I/O函数(3)-tee、fcntl函数

    tee函数使用 功能描述:tee函数在两个管道文件描述符之间复制数据,也是零拷贝操作.它不消耗数据,因此源文件描述符仍然可以用于后续的操作. 函数原型: #include <fcntl.h> ...

  3. [LeetCode OJ] Max Points on a Line—Given n points on a 2D plane, find the maximum number of points that lie on the same straight line.

    //定义二维平面上的点struct Point { int x; int y; Point(, ):x(a),y(b){} }; bool operator==(const Point& le ...

  4. 【USACO 3.1.2】总分

    [描述] 学生在我们USACO的竞赛中的得分越多我们越高兴.我们试着设计我们的竞赛以便人们能尽可能的多得分,这需要你的帮助.我们可以从几个种类中选取竞赛的题目,这里的一个"种类"是 ...

  5. 【USACO 1.2.5】双重回文数

    [题目描述] 如果一个数从左往右读和从右往左读都是一样,那么这个数就叫做“回文数”.例如,12321就是一个回文数,而77778就不是.当然,回文数的首和尾都应是非零的,因此0220就不是回文数. 事 ...

  6. golang io需要牢记的几个点

    对于Reader比较麻烦需要记住以下: When Read encounters an error or end-of-file condition after successfully readin ...

  7. asp.net 调用天气所遇到的问题

    由于在项目用了显示天气的功能,原有的调用方法 直接通过      <iframe name="weather_inc" src="http://i.tianqi.c ...

  8. windows批处理命令之ren

    1.批处理批量修改文件后缀名(假设我需要把一个文件夹中的很多txt文件改为sql文件): 1)在需要被处理的文件的文件夹里先新建一个txt文本,然后在文本中写入: ren *.txt *.sql 2) ...

  9. 通过 Xftp5 管理 centOS 7 文件

    一. 在安装好了centOS 7 的服务上,打开终端 运行 ip -s addr 命令 获取服务的IP地址 [root@localhost ~]# ip -s addr1: lo: <LOOPB ...

  10. Javascript中回调函数的学习笔记

    function a_b(kkis){ document.body.style.background ='red'; kkis(); } function fli(){ alert('######## ...