【C++学习】C++初探 (2)

1.引用深入学习

指针的引用

同一般变量一样指针也可以用作引用。可以实现在C语言中的双重指针的效果。可以不必对指针取地址而达到改变指针的目的。
使用实例:

#include "iostream"
using namespace std;
//指针的引用

struct Teacher
{
	char name[32];
	int age;
};
//
int getTeacher(Teacher *&p)
{
	//从堆中申请内存
	p = (Teacher*)malloc(sizeof(Teacher));
	if (p ==NULL)
	{
		return -1;
	}
	p->age = 33;
}
void FreeTeacher(Teacher *p)
{

	free(p);
}


void main()
{

	Teacher *PT1 = NULL;
	getTeacher(PT1);
	cout << PT1->age << endl;
	FreeTeacher(PT1);
	system("pause");
}



void main()
{
	const int a = 10;//C++编译器将其放在符号表中
	//int &n = 41;//引用必须有内存
	const int &n = 41;//引用必须有内存,C++编译器会给41自动分配内存空间
}

其实没什么软用,谁没事写的这么花里胡哨。

2.内联函数

内联函数不能做声名!!!

inline void printA()
{
	int a = 10;
	cout << a << endl;
}
//与宏替换类似
//内联函数与宏代码有点类似
//内联函数由编译器处理
//内联函数请求失败会当做普通函数处理
//感觉内联函数只有减小开销的作用 
void main()
{
	printA();
	system("pause");
}

3. 函数参数相关拓展

默认参数与占位参数
在C++中函数的形参是可以赋默认值的
如果有参数按所写参数来,如果没有可以按照默认参数

void myprint(int x = 3)
{
	cout << x << endl;
}

void main()
{

	myprint(4);
	myprint();
	system("pause");
}

//函数的占位参数
void func(int a, int b, int)
{
cout << "a=" <<a << endl << "b=" << b << endl;
}
//函数占位参数虽然没有,但要补全
void main()
{
func(1, 2, 3);
system("pause"); 
}

感觉还是没什么软用
据说是为了以后做扩展用的
我觉得可能是为了,以后把底层函数改变,增加入口参数时,避免所有都重写的麻烦
其实还是没啥软用,咋地你都得全改一遍不是

4.函数重载

函数名相同,但是再参数不同,类型不同,执行不同语句的功能
感觉这还有点用的,之前学MATLAB的时候很多函数都是如此
返回值不是函数重载的判断标准
编译器会帮你自动完成匹配

void myprint(int a)
{
	cout << a << endl;
}

void myprint(int a, int b)
{
	cout << a << endl << b << endl;
}


void main()
{
	myprint(1);
	myprint(1, 2);   

	system("pause");
}
函数重载结合函数指针
void func(int a)
{
	cout << a << endl;
}


void func(char*p)
{
	cout << *p << endl;
}

void func(int a, int b)
{

	cout << a << endl;
	cout << b << endl;
}
//申明函数类型
//typedef void  (myType)(int a, int b);
申明函数指针类型
typedef void  (*myType)(int a, int b);
//通过函数指针指向函数入口
void main()
{
	myType fp;//函数指针
	fp = func;//把函数指针指向函数入口
	fp(1, 2);
	system("pause");

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

与光同程

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

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

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

打赏作者

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

抵扣说明:

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

余额充值