C++ 的内置函数(inline)和作用域运算符(::)


//

//  main.cpp

//  内置函数和变量作用域

//

//  Created by 周双建 on 16/4/19.

//  Copyright © 2016 周双建. All rights reserved.

//



/************************************************************************/

/*!

 *   内置函数

 *   1.什么是内置函数?

        程序在编译的时候将所调用函数的代码嵌入到主程序中。这种嵌入到主程序中的函数称为内置函数。

 *   2.内置函数有什么好处?

        内置函数大大地提高程序的执行效率。

 *   3.使用场景

        例如:调用函数需要一定的时间,如果有些函数需要频繁的使用,则累积所调用的时间会很长,降低程序的执行效率,这时候,我们就可以使用内置函数(内联函数)来提高我们程序的执行效率。

 *   4.内置函数的指定方法

        指定内置函数很简单,只须在函数的首行左边加上 inline 就可以了。

 */

#include <iostream>

using namespace std;// 创建命名空间

inline int max_c(int a ,int b,int c ){

    if (a>b) {

        b = a;

    }else if (c>b){

        b= c;

    }else{

        b = b;

    }

    return b;

}// 求三个整数的最大数(这是一个内置函数)

//int main(int argc, const char * argv[]) {

//    int i = 25 , j = 30 ,k = 21,m ; // 程序常量和变量的声明

//    m = max_c(i, j, k); // 调用函数

//    cout<<"max_c:"<<m<<endl; // 函数的输出

//    return 0;

//}

/*!

 *  程序的解读

      在函数被指定为内置函数,编译系统在遇到改内置函数时,就用内置函数体代替调用内置函数的,同时将实参代替形参。这样 m =  max_c(i, j, k); 就被换成:

    {

      if (a>b) {

          b = a;

      }else if (c>b){

          b= c;

      }else{

          b = b;

      }

      return b;

    }

 *  程序输出:

           max_c:30

           Program ended with exit code: 0

 *

 *  内置函数和#define 的区别和像似。

        宏定义是在编译前由预处理程序对其预处理的,它只是简单的字符置换而不做语法的检查。

        内置函数是编译系统在遇到改内置函数时,就用内置函数体代替调用内置函数的,同时将实参代替形参。

 */

/************************************************************************/

/*!

 *    作用域运算符

 *    前言:

          每一个变量都有其有效的作用域,只能在变量的作用域内使用该变量,不能直接使用其他作用域中的变量。

 *

 */

// 请猜下面输出的结果???

//float a = 250.0; // 全局变量

//int main(){

//    int  a = 20 ; // 局部变量

//    cout<<"Result :"<< a<<endl;

//    return 0;

//}

/*!

 *  1 输出的结果:

     Result :20

     Program ended with exit code: 0

 *

 *  2 为什么输出的是 20 而不是 250.0  ???

        答: 这是变量的生命周期的问题。量的输出是采用最近取值。

 *

 *  3 我想输出 250.0 怎么做????

        答: C++ 提供了作用域运算符::,可以访问全局变量或常量。

 

 */

float a = 250.0; // 全局变量

int main(){

    int  a = 20 ; // 局部变量

    cout<<"Result :"<< a<<endl;

    cout<< "Result_C"<< ::a <<endl;

    return 0;

}

/*!

 *  1 输出结果

        Result :20

        Result_C250

        Program ended with exit code: 0

 *

 *  2::a” 表示访问全局变量的 a ,而不是局部变量的 a .

 */

/************************************************************************/


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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值