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

关于#

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

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

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

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

和表达式的计算


C的库文件分为两类:

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

库函数也需要声明

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

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

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

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

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


#include <stdio.h> 
// 首先调用库 此库文件有对库函数的定义的声明,下面源代码即将有使用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. 声明完可以再进行定义,定义一次就不能变了。
  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

没有余地 EliasJie

你的鼓励将是我创作的最大动力

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

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

打赏作者

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

抵扣说明:

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

余额充值