首要须知 “ # 、库文件(.h) 、库函数(.c) 、定义 、声明 ”的解释说明:

关于#

#是C语言“预编译”的标示符;

预编译的意思是:在对源程序代码进行编译前所做的工作

预编译工作与最终可执行文件的执行,完全不同

因为“预编译”是预先于编译工作的,因此,所有的“#”(预处理)操作坚决不可能涉及语句的执行

和表达式的计算


C的库文件分为两类:

  1. 扩展名为".h"的文件,称为头文件。在".h"文件中包含了常量定义 类型定义宏定义函数原型以及各种编译选择设置等信息。
  2. 是函数库,包括了各种函数的目标代码,供用户在程序中调用。通常在程序中调用一个库函数时,要在调用之前包含该函数原型所在的".h" 文件。

库函数也需要声明

对于库函数的声明,C语言程序是通过“系统头文件”进行的;

#include的本质是:将XXXX.h的全部内容(C程序)复制一份,代替#include;即,XXXX.h的内容与所编写的源代码内容,合并编译生成最终的可执行文件。

XXXX.h中有三部分基本内容:同上

  1. 宏定义   
  2. 类型定义
  3. 库函数声明(将函数封装入库,供用户使用的一种方式)

例如:#include   就有关于printf()函数、scanf()函数等函数的声明。


#include  
// 首先调用库 此库文件有对库函数的定义的声明,下面源代码即将有使用printf等 某些函数的函数定义和声明

int main()   

{             
    int a;    // 这个叫函数的声明,变量声明
    
    a = 100;  // 变量赋值
         
    int b = 200; // 变量定义: 定义也是声明,声明了它的类型和名称;为变量分配内存空间,同时可以选择指定初始值,变量有且仅有一个定义。
    
    printf("%d %d", a,b);
...
...

    return 0;// 返回值类型为 int
}             // ;结尾是每个函数体

   

  1. int main()  C语言main函数的一种声明方式
  2. return  表示函数的返回值类型,表示该主函数的返回值是 0 一个int类型的值  (返回值是指程序返回给操作系统的值:是int main的整型)
  3. main表示主函数,是C语言约定的程序执行入口其标准定义格式为 int main(int argc,char *argv[]);在int main()中,()中没有数值表示入参为空,等同于int main(void);
  4. 事例中 printf("%d %d",a,b) ;表示将 a,b 的值作为整型类型打印出来,在屏幕上显示,而主函数的返回类型int会将返回的值回传给主调进程,而不是在屏幕输出。
  5. 因此,printf的输出类型跟主函数的返回类型没有关系,互不关联。事例中,return 0 对应才是主函数的返回值类型。
  6. 关键字:关键字声明变量名而不是定义


定义(Definition)则指明变量、函数存储在哪里,当定义发生时,系统为变量或函数分配内存单元。函数的定义是一个完整的函数单元,包含函数类型函数名形参及形参类型函数体等在程序中,函数的定义只能有一次。函数首部与花括号间不加分号

声明(Declaration)声明只是对编译系统的一个说明:函数声明是对定义的函数的返回值的类型说明,以通知系统在本函数中所调用的函数是什么类型。不包含函数体(或形参),调用几次该函数就应在各个主调函数中做相应声明。函数声明是一个说明语句,必须以分号结束


小结:

  1. 函数的声明和定义区别比较简单,带有{}的就是定义,否则就是声明。
  2. 一种是函数声明;  一种是函数定义。声明是告诉编译器有这个东西,参数和返回值格式;定义是具体的实现。
  3. 函数的声明和定义需要区分开。变量的声明和定义可以不那么区分。
  4. 声明可以声明很多次。
  5. 声明完可以再进行定义,定义一次就不能变了。

你可能感兴趣的:(C语言学习,c语言,c++)