【小黑chenchen】16话:C到C++_1

【小黑chenchen】16话:C到C++_1_第1张图片

目录

一、bool类型:

二、内联函数:

三、引用:

四、函数重载:

五、函数参数缺省


一、bool类型:

①:bool类型

        bool是一种数据类型,用于存储逻辑值

        有两种取值,分别为true(真)和false(假)

        所占内存大小:1字节

②:定义的基本格式

        bool 变量名 = true (false);

③:true和false

        是C++新增的关键字,用于表示逻辑值

        true代表“逻辑真”,非0为真,一般用1表示真

        false代表“逻辑假”,0为假

④:bool类型的取值

        不仅仅只能用true或false,还可以是一个数值

        如果用数值表示,遵循非0为真的原则

⑤:例如

#include

int main()
{
	bool Isture = true;

	Isture = false;
	Isture = 0;
	Isture = 3;
	Isture = 1 > 2;

	if (Isture)
	{
		printf("真的。\n");
	}
	else
	{
		printf("假的。\n");
	}

    printf("%d\n", sizeof(bool));    //1
	return 0;
}

二、内联函数:

①:内联函数

        一个函数,是通过内存膨胀的方式来减少函数调用时的跳转时间,以空间换时间。

②:内存膨胀

        指的是代码区的代码变多。

        使用内联函数之后,这个函数在调用时就不会在栈区申请内存来运行,也就是说少了                       入栈出栈的时间。

        一个普通函数在调用时会有入栈出栈操作。   

【小黑chenchen】16话:C到C++_1_第2张图片

③:内联函数关键字

        inline

④:内联函数的定义

        基本格式

 inline 数据类型 变量名()
 {
   ......
 }   

             定义一个内联函数,也就是在定义一个函数的时候在返回值类型前面加一个

             inline关键字用来修饰整个函数   。

⑤:特点

        1.本质上,内联函数也是一个函数,其使用与普通函数的使用方法一致。

        2.作用是,以空间交换时间,节省函数调用时的跳转时间。

        3.   如果,函数的函数体代码过长,或者函数体中有循环,

                         则不建议使用内联函数。

        4.如果,函数的函数体是一个简单的功能,如简单的赋值语句或者返回语句,并且使用频率高

                      则建议使用内联函数。        

⑥: 例如

#include
inline int MAX(int x, int y)
{
	return x > y ? x : y;
}

int main()
{
	int a, b;
	printf("请输入两个整数: ");
	scanf("%d%d", &a, &b);

	printf("两者中较大数为: %d\n", MAX(a,b));
	return 0;
}

三、引用:

①:引用

        是对一个变量或对象取的别名。

②:引用的定义

        既然是对一个变量或对象取别名,那就先得有变量或对象,不能凭空取一个别名,

        也就是说,定义引用必须初始化。

③:引用的基本格式

真名的数据类型 & 别名 = 真名;

④:引用的使用

        引用的是什么类型的变量,这个引用的使用就与被引用的使用方法一样。

⑤:引用的特点

        1、引用是别名,所以定义的时候必须初始化。

        2、对引用的操作和对引用对应的变量的操作是完全等价的。

        3、& 在引用这里不是取址符,而是起到标志的作用。

        4、引用的类型必须和其所对应的变量的类型相同。

           (数据类型与真名的一致)

        5、引用不是定义一个新的变量或对象,因此不会为此引用开辟一个的新的内存空间。

        6、同一变量或对象可以有多个别名。

⑥:引用和指针的区别

在效率上是没有多大的区别的。

        1、引用是别名,不会被分配存储空间;(别名和真名共享同一块内存地址)

              指针是实体,会被分配存储空间。

        2、引用在定义时必须初始化,

                            而且不能被改变;(引用不能改变其所带指的变量或对象)

              指针定义时可以不用初始化,

                            也可以改变指向。 

        3、引用没有多级引用的概念,指针有多级指针。

        4、引用是直接访问,指针是间接访问。        

⑦:例如

#include
int main()
{
	int a = 1, b = 2;
	int & A = a;

    int & A = b;        //×,重定义,多次初始化
    
    int & C = A;        //可以对引用取别名,但没有意义

	printf("%d\n", A);

	A = 3;
	printf("%d\n", a);  //3
	return 0;
}

⑧:引用传递

        引用可以作为函数参数进行传递,这称之为引用传递。

        引用传递和地址传递一样,都可以通过形参的改变影响实参的值。

⑨:例如

#include
int SUM(int &t, int y)
{
	return t += y;
}

int main()
{
	int a, b;
	int & x = a;

	printf("请输入两个整数: ");
	scanf("%d%d", &a, &b);
	putchar('\n');

	printf("两数之和为: %d\n", SUM(x,b));
	putchar('\n');
    printf("%d\n",a);    //值为a+b的和
	return 0;
}

四、函数重载:

在同一项目中定义的函数名字可以重复,也就是说可以有同名的函数,但是要满足特定的条件。

①:构成函数重载的要求

        1、函数名必须一致

        2、函数的参数列表必须不同

                ( 参数列表个数不同或相对应位置上的类型不同)

        重载函数满足上述两个条件即可,函数的返回值不同不在条件内容中。

     

②:例如

#include
void SUM(int x, int y)
{
	printf("%d\n", x + y);
}
void SUM(float x, float y)
{
	printf("%f\n", x + y);
}

int main()
{
	int a, b;
	printf("请输入两个整数: ");
	scanf("%d%d",&a,&b);
	SUM(a, b);
	putchar('\n');

	float c, d;
	printf("请输入两个小数: ");
	scanf("%f%f", &c, &d);
	SUM(c, d);
	return 0;
}

   ③:函数重载的二义性问题                                      

           赋值兼容导致对重载函数的调用不明确。     

           在C/C++中浮点型常量默认为double类型,

           double类型可以给int、float类型的变量赋值。 

#include
void SUM(int x,int y)
{
    printf("%d\n",x + y);
}
void SUM(float x,float y)
{
    printf("%f\n",x + y);
}

int main()
{
    SUM(1.1,2.2);               //报错
    return 0;
}

 ④:函数重载的二义性问题的解决

          1、加入新的对应的重载函数  

          2、实参进行强制类型转换赋值

        例如:   

#include
void SUM(int x,int y)
{
    printf("%d\n",x + y);
}
void SUM(float x,float y)
{
    printf("%f\n",x + y);
}

int main()
{
    SUM((int)1.1,(int)2.2);               //no problem
    return 0;
}

五、函数参数缺省

①:函数参数缺省

在函数声明时,给某一形参赋一个默认值,

在调用该函数时,

如果不给这个带有默认值的形参传递参数,这个形参就会使用默认值;

如果给定了参数,就以给定值为准。

②:函数参数缺省的注意事项

1、如果有函数声明,就只能在函数声明时给定缺省值(默认值),不可在函数定义时给定。

2、函数参数缺省只能从后往前缺省。

3、函数参数缺省所给定的值必须是常量,不可是变量。

4、函数参数给缺省值时需要注意不要与重载函数产生二义性。

③:例如

#include
void SUM(int x, int y=22)
{
	printf("%d\n", x + y);
}
void SUM(float x, float y=2.2)
{
	printf("%f\n", x + y);
}

int main()
{
	SUM(44);                    //66

	SUM((float)4.4);            //6.600000               
	return 0;
}

__________________#

你可能感兴趣的:(C++,c++)