C语言程序设计现代方法-1-概述与基本概念(前两章)

参考:《C语言程序设计现代方法》

第一章 C语言概述

1.1 什么是现代方法?

适应于现代的C语言编程需求,主要包括:

  • 什么场景下需要使用C
  • C的新标准
  • 一些旧的优化方法在当下的不适用性
  • 将C看作为一个软件工程的工具
  • 推迟介绍C的底层原理

1.2 C语言的历史是什么?

作为Unix系统的副产品不断演进,由最开始的B语言=>NB语言=>C语言 (贝尔实验室的Ken Thompson、Dennis Ritchie等人开发)

随后考虑到程序的可移植性,出现了一系列对于C的标准:

  • 1990年,ISO组织制定了C89或者C90标准
  • 1999年,出现了新的C99标准 (变化显著)
  • 随后,国际标准化组织分别在2011年制定了C11以及2018年制定了C18 (变化并没有非常显著)

1.2 C语言的优点与缺点有哪些?

优点:

  • 高效:因为是底层语言所以良好的编码可以实现高效 (C是一门底层语言,拥有其他语言没有的/隐藏的底层操作:字节和地址)
  • 可移植性:C语言没有分裂出多个分支,编译器小且语言容易编写(C语言与汇编语言极为相似)
  • 灵活、功能强大
  • 与Unix集成度高(因为Unix就是用C写的)

缺点

  • 容易隐藏错误:权力越大,责任越大,有的错误难以发现(编译器也不会发现)
  • 难以维护、修改、理解

第二章 C语言基本概念

2.1 cc编译器与gcc的区别?

参考:https://www.cnblogs.com/52php/p/5681725.html

gcc

是GNU Compiler Collection,原名为Gun C语言编译器,因为它原本只能处理C语言,但gcc很快地扩展,包含很多编译器(C、C++、Objective-C、Ada、Fortran、 Java),可以说gcc是GNU编译器集合。

g++

是C++编译器。

cc

Unix系统的 C Compiler,一个是古老的 C 编译器。而 Linux 下 cc 一般是一个符号连接,指向 gcc;可以通过 $ ls -l /usr/bin/cc 来简单察看,该变量是 make 程序的内建变量,默认指向 gcc 。 cc 符号链接和变量存在的意义在于源码的移植性,可以方便的用 gcc 来编译老的用cc编译的Unix软件

image-20220529162823411

2.2 C基本语法中的重点有哪些?

  • C99中声明块可以不在语句块之前:也就是说不用把所有声明都放在前面,而是可以穿插,但是要保证的是在使用之前必须要声明

  • 当将一个浮点数赋值给一个float类型的变量时,最好在常量后面添加一个f:

    profit = 2150.54f; 
    

    不然可能会引发编译器的警告,因为编译器默认认为不带f的浮点数常量为double,所以将一个double赋值给float可能会导致进度损失问题

  • 程序开始时,某些变量会被初始化,有一些不会(没有被赋值并且没有默认值的变量),这里要注意手动先初始化

  • C程序中连续初始化的注意点:

    int a, b, c = 10; // 注意只有c被初始化了,而a、b均未初始化!
    
  • 宏:

    • 基础使用:

      #define 宏名称 替换文本
      
      • 替换文本本身可以为空
    • 在程序的预处理阶段,预处理器会把每一个宏替换为其表示的值

    • 宏的不成文的规定是一般都是全大写字母

  • C语言中的标志符是区分大小写的

  • main函数的末尾可以使用return 0 也可以使用exit(0),这两种在main中等价;并且也可以在末尾没有return语句,如果是C99,返回的类型是int的话,一般需要return告诉操作系统最终执行的返回值(否则将会返回一个不确定的值)

2.3 gcc的常用flag有哪些?

  • -Wall: 检测可能的所有出现的错误并生成警告信息
  • -W: 除了-Wall之外,针对具体情况的额外警告信息
  • -pedantic: 根据C标准的要求生成警告信息,避免使用非标准特性
  • -ansi: 禁用GCC的非标准C特性
  • -std=c89或-std=c99: 指定使用那个标准
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

xxx_undefined

谢谢请博主吃糖

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值