C语言知识点(三):基础知识

1、头文件中的ifndef/define/endif有什么用

防止该头文件被重复引用

2、#include<filename.h>和#include"filename.h"的区别

对于#include<filename.h>,编译器从标准库路径开始搜索"filename.h"

对于#include"filename.h",编译器从用户的工作路径开始搜索"filename.h"

3、引用和指针的区别是什么

(1)引用本身是变量的别名,对引用的操作就是对变量本身的操作

(2)引用必须要被初始化,指针可以不被初始化

(3)引用被初始化后不可以改变,指针可以改变所指的对象

(4)不存在指向空值的引用,存在指向空值的指针。就是说引用不可以引用空值,而指针可以指向空值。

4、函数参数入栈顺序

C语言函数参数入栈顺序是从右往左的,这是由编译器决定的,更具体的说是函数调用约定决定了参数的入栈顺序。

    int a = 10, b = 20, c = 30;
    printf("%d,%d,%d\n", a = a + b, b = b + c, c = c * 2); //a=90,b=80,c=60

5、const的用法

  关键字const用来定义常量,与预编译define相比,有以下的优点

(1)预编译指令只是对值的简单的替换,不能进行类型检查

(2)可以保护被修饰的东西,防止被意外修改,增加程序的健壮性

(3)编译器通常不为普通const常量分配存储空间,而是将它们保存在符号表中,使得它成为一个编译期间的常量,没有了存储与读内存的操作,使得它的效率也很高

const常在以下几个方面使用

(1)修饰局部变量

     const int n=5;

     int const n=5;//两种写法一样,用const修饰变量一定要初始化

2)常量指针与指针常量

(3)修饰函数的返回值

(4)修饰函数的参数

(5)修饰全局变量

6、inline内联函数

定义:在C语言中,如果一些函数被频繁调用,不断地有函数入栈,即函数栈,会造成栈空间和栈内存的大量消耗

为了解决这个问题,特别的引入了inline修饰符,表示为内联函数

目的:减少函数调用的开销

用法:在函数返回值前加修饰符inline:如

inline int fun(int n);

编译器会在源文件的合适位置生成函数代码的副本,以避免函数调用。从函数角度来看,相比inline,宏虽然同样能减少函数调用的开销,但宏有着无法回避的天生缺陷

优势:inline函数会像宏一样展开,执行速度非常快

局限

(1)建议:定义inline内联函数,实际上是对编译器的“建议”,编译器可能会拒绝

(2)小函数:inline函数如果代码量过大,编译器几乎不可能采纳内联函数的“建议”

(3)限制:inline内不可以含有复杂的结构控制语句例如while,switch等,并且内联函数本身不能是递归函数

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值