第一章  基础知识

  • 1.1  基本框架

    • //任何一个c语言程序都必须包括以下格式:
      int main(int argc, char *argv[] )
      {
      return ;
      }
      //这是c语言的基本结构,任何一个程序都必须包含这个结构。括号内可以不写任何内容,那么该程序将不执行任何结果。
    • 1.1.1  main()
      • 在c语言中称之为“主函数”,一个c程序有且仅有一个main函数,任何一个c程序总是从main函数开始执行,main函数后面的一对圆括号不能省略。
        main(int argc,char**argv) {} 第一个参数是表示输入的字符串的数目,第二个参数是指向存放的字符串
      • 1.1.1.1  C语言中int main()和int main(void)区别
        • .K&R书上main函数定义写成main(){...} 形式,不写返回值类型也不写参数列表,这是Old Style C的风格。
          Old Style C规定不写返回值类型就表示返回int型,不写参数列表 就表示参数类型和个数没有明确指出。
          这种宽松的规定会导致很多复杂的Bug产生,不幸的是现在的C标准为了兼容旧的代码仍然保留了这种语法。 . 其实系统在调用main函数时是传参数的,所以main函数最标准的形式应 该是int main(int argc, char *argv[])。
          C标准也规定了int main(void) 这种形式,如果不使用系统传进来的两个参数也可以写成这种形式。
          但除了这两种形式之外,以其它形式定义main函数都是错误的或不可移植的。
      • 1.1.1.2  标准形式
        • 在最新的 C99 标准中,只有以下两种定义方式是正确的:
          int main(void){}
          //整数类型主函数(无类型) = int main()
          int main(int argc,char **argv)
          //整数类型主函数(整数类型 统计参数个数,字符类型*数组指针至字符[])
      • 1.1.1.3  C++98中的定义
        • 如下两种main函数的定义方式:
          int main( )
          int main( int argc, char *argv[] )
    • 1.1.2  函数体
      • 被大括号{ }括起来的内容称为main函数的函数体,这部分内容就是计算机要执行的内容.
        在{ }里面每一句话后面都有一个分号(;),
        在c语言中,我们把以一个分号结尾的一句话叫做一个c语言的语句,分号是语句结束的标志。
    • 1.1.3  #include<stdio.h>
      • 1.1.3.1  注意

        • (1)以#号开头
        • (2)不以分号结尾
        • (3)# include”stdio.h”也是对的
      • 1.1.3.2  预处理
        • 这一行没有分号,所以不是语句,在c语言中称之为命令行,或者叫做“预编译处理命令”。 编译预处理不是C语言的一部分,不占运行时间,不要加分号。C语言编译的程序称为源程序,它以ASCII数值存放在文本文件中。
      • 1.1.3.3  # include “stdio.h”与#include <stdio.h>区别
        • <>搜索顺序为:系统目录-->环境变量目录-->用户自定义目录。
        • ""则是用户自定义目录-->系统目录-->环境变量目录.
      • 1.1.3.4  文件包含的考查点:
        • 这里一个C语言程序是有两个文件组成,分别是no1.c, no2.c。那么no1.c中最开始有个#include”no2.c”他表示把第二个文件的内容给包含过来,那么no1.c中调用add()函数的时候就可以了把数值传到no2.c中的被调用函数add()了。
        • 一个文件必须要有main函数。这句话错了。例如:no2.c就没有。
        • 头文件一定是以.h结束的。这句话错了。例如:no1.c中就是#include”no2.c”以.c结尾的。
    • 1.1.4  注释
      • 程序中以 /*开头并且以*/结尾的部分表示程序的注释部分,注释可以添加在程序的任何位置,为了提高程序的可读性而添加,但计算机在执行主函数内容时完全忽略注释部分,换而言之就是计算机当做注释部分不存在于主函数中。
      • 注意:1.F      //      /*
      • */
      • 2.F      /*    /*  */     */
      • 3.T     //    //
  • 1.2  C程序的生成过程
    • C程序是先由源文件经编译生成目标文件,然后经过连接生成可执行文件。

    • 编译过程
    • 源程序的扩展名为 .c  -(编译)-> 目标程序的扩展名为  .obj  -(连接)->可执行程序的扩展名为 .exe 。
  • 1.3  标识符
    • 概念

      • 在编写程序时,必须为函数、变量等命名,这个名字称为标识符。
    • 1.3.1  标识符分类(都是·小写)
      • ①关键字(32个)(有固定含义,不可改变)

        • 类型说明符:int,float,double等
        • 语句定义符:if,for,while等
      • ②预定义标识符(有特殊含义,可以改变)
        • 库函数的名字:printf , scanf 等
        • 编译预处理命令名:include等
      • ③用户自定义的标识符  
        • ⅰ格式合法,ⅱ不能使用关键字,ⅲ见名知意
    • 1.3.2  关键字
      • 关键字是具有特定含义的,专门用来说明c语言特定成分的一类标识符,不能用作用户的标识符。

        • auto break       case        char          union
        • do         double     else        enum     extern
        • goto           if     int        long short
        • signed          static        sizeof      struct       switch
        • unsigned void for    while        typedef
        • continue    float     return          typedef     default
    • 1.3.3  预定义标识符
      • 预定义标识符在c语言中也有特定的含义,但可以用作用户标识符,预定义标识符分为两类:

        • (1)、库函数名字,比如(printf,scanf,sin,isdigit等)
        • (2)、编译处理命令名,比如(define,include)
    • 1.3.4  用户标识符
      • 用户根据需要自己定义的标识符称为用户标识符。无论如何自定义标识符,都必须符合标识符的三条命名规则。
      • 注意:正常系统函数由_开头,因此不建议自定义函数以下划线开
    • 1.3.4.1  命名规则
      • C语言中标识符的命名规则如下:

        • 1、标识符只能由字母、数字、下划线组成;
        • 2、标识符的第一个字母必须是字母和下划线;(开头)
        • 3、标识符区分大小写字母,如If和if是两个完全不同的标识符。
      • 合法标识符如下:
        • A6       b_3   _mn   _
      • 非法的标识符如下:
        • ab#12, 8m , tr3:4 , yes no
      • 标识符不能与程序中具有特殊意义的关键字相同,
      • 不能与用户编制的函数名、C语言库函数相同,
      • 在程序中各种标识符尽量不要重复,以便区分。
      • 选择变量名和其他标识符时,应注意做到 “见名知义”。

3011C语言_基础知识的更多相关文章

  1. Java学习-033-JavaWeb_002 -- 网页标记语言JSP基础知识

    JSP 是 Sun 公司提倡的一门网页技术标准.在 HTML 文件中,加入 Java 代码就构成了 JSP 网页,当 Web 服务器访问 JSP 请求的时候,首先执行其中的 Java 程序源码,然后以 ...

  2. iOS开发系列--C语言之基础知识

    概览 当前移动开发的趋势已经势不可挡,这个系列希望浅谈一下个人对IOS开发的一些见解,这个IOS系列计划从几个角度去说IOS开发: C语言 OC基础 IOS开发(iphone/ipad) Swift ...

  3. 【值得收藏】C语言入门基础知识大全!从C语言程序结构到删库跑路!

    01 C语言程序的结构认识 用一个简单的c程序例子,介绍c语言的基本构成.格式.以及良好的书写风格,使小伙伴对c语言有个初步认识. 例1:计算两个整数之和的c程序: #include main() { ...

  4. Oracle的DML语言必备基础知识

      前提是咱们都已经对常用的数据操纵语言非常熟悉了,对标准SQL: SELECT子句                --指定查询结果集的列 DROM子句                 --指定查询来 ...

  5. C语言面试基础知识整理

    一.预处理 1.什么是预编译?何时需要预编译? (1)预编译又称预处理,是做些代码文本的替换工作,即程序执行前的一些预处理工作.主要处理#开头的指令,如拷贝#include包含的文件代码.替换#def ...

  6. 动态样式语言—LESS基础知识

    CSS是一门非程序式语言,缺少逻辑性,不便于维护 LESS在CSS现有语法的基础上,为CSS加入程序式语言的特性 引入了变量.混入.运算.函数等功能,大大简化CSS的编写,降低了CSS的维护成本 LE ...

  7. mysql学习之路_基础知识

                    Mysql php阶段将数据库分为三个阶 基础阶段: mysql数据库的基本操作(增删改查),以及一些高级操作(视图,触发器,函数,存储过程等),PHP操作没有sql数 ...

  8. Tcl语言学习--基础知识

    一.脚本.命令和单词符号 一个TCL脚本可以包含一个或多个命令.命令之间必须用换行符或分号隔开. 1.关键字/变量 变量是程序的基础变量组成:变量名.变量值变量名要求:任何字符串都可以作为变量名,区分 ...

  9. 关于XML(可扩展标记语言)的基础知识与写法------2017-05-18

    XML(Extensible Markup Language) HTML:超文本标记语言,主要用来展示   XML:可扩展标记语言,用来做数据传输XML特点: 1.树状结构,有且只有一个根 2.标签名 ...

随机推荐

  1. ADO.NET - 批量更新或添加数据

    方法一:使用SqlBulkCopy实现批量更新或添加数据. SqlBulkCopy类一般只能用来将数据批量插入打数据库中,如果数据表中设置了主键,出现重复数据的话会报错,如果没有设置主键,那么将会添加 ...

  2. 部署NetCore项目(本文介绍用用IIS部署)

    首先要下载安装Core Runtim: 然后在IIS中的模块中就可以看到如下内容: 这时环境就搭好了: 下面按照正常的发布流程走就行了,关键看下面(一定要选择无托管代码)

  3. 为什么台湾人工智能可能抢输大陆?(XPU时代来临)

    到了 2020 年,每 3 支手机,就会有一支内建有 AI 芯片. 但目前浮出水面的 AI 芯片新创,几乎都是大陆公司. 为什么台湾这回选择缺席? 「我听说 CPU.GPU,没有听过 NPU? 」11 ...

  4. Atitit.故障排除系列---php 计划网站数据库错误排除过程

    Atitit.故障排除系列---php 计划网站数据库错误排除过程 Php页面报告的错误不能定位到myusql的db配置上...字说是db conn err Mysql 接入错误...大概查看哈能不能 ...

  5. linux的各个子系统

    Linux基本的子系统主要有CPU.Memory.IO.Network. 在这些子系统中,它们之间相互之间高度依赖.不论什么一个子系统的高负载都会引起其它子系统出现故障. 比如: 大量的页调入请求对内 ...

  6. Frequentist 观点和 Bayesian 观点

    1. Frequentist view Frequentist approach views the model parameters as unknown constants(未知的常数,而不是一个 ...

  7. 分位数(quantiles)、Z-score 与 F-score

    0. 分位数(quantiles) 因为累计分布函数(cdf,F−1)是单调增函数,因此其有反函数,不妨记为 F−1. 其真实的含义在于,如果 F 是 X 的 cdf,则 F−1(α) 的函数值为: ...

  8. Android 位置服务——BaiduLocation的使用

    原文:Android 位置服务--BaiduLocation的使用 版权声明:本文为博主原创文章,欢迎转载,转载请在文章显眼处说明文章出处并给出连接. https://blog.csdn.net/To ...

  9. Qt移动应用开发(六):QML与C++互动

    Qt移动应用开发(六):QML与C++互动 上一篇文章讲到了在Qt Quick中实现场景切换的一种可能的方法,场景切换是诸如游戏等应用在内必需要面临的技术难点,所以场景切换并没有通行的方法,依据自己的 ...

  10. 【值转换器】 WPF中Image数据绑定Icon对象

    原文:[值转换器] WPF中Image数据绑定Icon对象        这是原来的代码:        <Image Source="{Binding MenuIcon}" ...