c++内联函数

#include<iostream>//c++的输入输出

using namespace std;

//int inline add(int a, int b)

//{

// return a + b;

//}

////int add(int a, int b)

////{

//// return a + b;

////}

//int main()

//{

// //内联函数与有参宏的区别?

// // 1.有参宏是在预处理的时候展开的,内联函数在编译时展开

// // 2.有参宏是直接文本替换,而内联函数是有语法检查的

// //对于简单函数(可能存在高频次的调用)我们可以设计为inline函数(内联函数)

// // 内联函数设计时一定要体积小,逻辑简单

// // inline函数在被调用的位置上,进行展开(内嵌),就是将函数体的功能直接拿出来使用而不会像普通函数一样需要经过复杂操作

// int ret = add(10, 20);//add是inline函数,则会直接展开

// //调用add函数的时候,系统做了什么事情?

// // 1.保存现场2.将函数入栈3.以先右后左将实参入栈4.调用函数功能并获取结果5.恢复现场,接收结果,同时回收上一次函数的栈空间

// ////1.指针变量可以存在引用 数据类型*&引用名=指针变量

// //int n = 10;

// //int* np = &n;

// //int*& np_r = np;

// //const int* np2 = np;

// //const int*& np2_r = np2;

// ////2.数组能存在别名 数据类型(&别名)长度...=数组名

// //int arr10{ 1,2,3,4,5,6,7,8,9,10 };

// //int(&arr_r)10 = arr;

// //for (int i = 0; i < 10; i++)

// //{

// // cout << arri << " ";

// //}

// //设计字符串

// ////引用的本质:在编译时,将引用优化为指针

// ////普通引用优化成指针常量

// //int n = 1;//n 是一块内存,值为1

// //int* p = &n;//p里面存着n的地址

// //int& r = n;//r就代表n 没有独立内存 优化后为 int *const r=&n;

// //*p = 5;//通过*从内存中把n改成5 此时r也变成5

// //r = 10;//直接操作n 将n变为10

// ////*p r n 都为10

//}

////利用引用进行交换

////void swap_val(int& a, int& b)

////{

//// int temp = a;

//// a = b;

//// b = temp;

////}

////int main()

////{

//// int x = 10;

//// int y = 20;

//// swap_val(x, y);

////}

////int main()

////{

//// //const引用:万能引用 初始化值可以为常数 变量 const变量

// const int& len = 1;//可以给常数

// const int len2 = 20;

// const int& len2_r = len2;

// //int& y = len2_r;len2_r相当于常数 普通引用不能引用常数

//}

相关推荐
To_OC7 小时前
LC 200 岛屿数量:经典 DFS 入门题,我第一次写居然连方向都搞错了
javascript·算法·leetcode
To_OC1 天前
LC 128 最长连续序列:别上来就排序,O (n) 解法才是这题的灵魂
javascript·算法·leetcode
05Kevin2 天前
lk每日冒险题--数据结构6.27
算法
To_OC2 天前
从一次栈溢出报错说起,我把递归彻底扒明白了
javascript·算法·程序员
千纸鹤安安2 天前
千问Qwen-AgentWorld来了:一个语言模型搞定七大Agent场景,GPT-5.4都输了
算法
七牛开发者2 天前
MCP 到底是什么?为什么 Agent 都想接上它
算法·aigc·agent
kisshyshy3 天前
从递归到迭代,一文吃透二叉树的核心知识与 JavaScript 实现
javascript·算法·代码规范