最全C++知识点--函数

本文深入探讨了C++中的函数操作,包括阶乘函数实现、实参与形参的区别、数组引用作为函数参数、多维数组的传递方式、initializer_list的使用、返回左值引用、const形参的重载以及函数指针的定义与使用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1 函数操作

int fact(int val);

 

int main() {

    int j = fact(5);

    cout << "5! is " << j << endl;

    return 0;

}

 

int fact(int val) {

    int ret = 1;

    while (val > 1) {

        ret *= val--;

    }

    return ret;

}

2 实参和形参区别

形参是函数定义时出现,实参是调用时出现的。

3 void fcn(const int i){  fcn能够读取I,但是不能向写值}

4 数组引用形参

int k[10]={0,1,2,3,4,5,6,7,8,9};

print(k);

void print(int (&arr)[10]) {

    for (auto elem:arr) {

        cout << elem << endl;

    }

}

5 传递多维数组

Int *matrix[10]; //10个指针构成的数组

Int (*matrix)[10]; //指向含有10个整数的数组的指针

6 initializer_list是一种模板类型,对象的元素值永远是常量。

void error_msg(initializer_list<string> li) {

    for (auto beg = li.begin(); beg != li.end(); ++beg) {

        cout << *beg << " ";

    }

    cout << endl;

}

7 引用返回左值

char &get_val(string &str, string::size_type ix) {

    return str[ix];

}

string s("a value");

get_val(s, 0) = 'A';

cout << s << endl;

输出:

A value

char &get_val(string str, string::size_type ix) {

    return str[ix];

}

string s("a value");

get_val(s, 0) = 'A';

cout << s << endl;

输出:

a value

8 下面的函数效果一样

int &get(int *arry, int index) {

    return arry[index];

}

 

int &get2(int (&arry)[10], int index) {

    return arry[index];

}

9 重载和const形参

一个拥有顶层const的形参无法和另一个没有顶层const的形参区分开

Record lookup(Account&);

Record lookup(const Account&); //对于前者来说是新函数

10 函数指针

bool (*pf)(const string &,const string &);

bool b1=pf("hello","goodbye");

bool b2=(*pf)("hello","goodbye”);//两者等价

### 嘉立创PCB布线规则指南 #### 一、基本布线准则 嘉立创对于PCB的设计有着严格的要求,确保电路的功能性和可靠性。在进行PCB布线时,应遵循一些基本原则来优化性能并减少潜在问题的发生。 为了提高信号质量,在驱动IC芯片到功率器件(如MOSFET或IGBT)之间的连线应当尽可能短直,避免不必要的过孔和线路交叉现象[^1]。这种做法可以有效降低寄生电感与电阻的影响,从而减小噪声源以及可能引起的振荡风险。 #### 二、元件放置建议 当涉及到电源管理模块或其他高速开关应用场合下的元器件摆放位置时,应该让控制逻辑部分尽量接近执行单元,比如使驱动器紧挨着被控对象安装于同一侧表面贴装层上。这样做不仅有助于缩短连接路径长度,还能增强系统的整体稳定性,同时也有利于散热处理。 #### 三、特殊注意事项 针对高频工作环境中的敏感模拟/射频区域,则需更加谨慎对待其周围电磁兼容性(EMC)特性;可通过设置接地平面作为屏蔽手段之一,并合理规划各功能区块间的相对距离关系以抑制串扰效应。此外,在多层结构里适当增加内部电源层(Power Plane) 和地线层(Ground Plane),可进一步改善供电品质和平滑电流波动情况。 ```python # Python代码仅用于说明如何通过编程实现自动检测某些特定条件下的布线合理性验证过程。 def check_trace_length(trace, max_allowed_length): """ 检查走线长度是否超过允许的最大值 参数: trace (str): 走线名称 max_allowed_length (float): 最大允许长度 返回: bool: 如果满足条件返回True,否则False """ actual_length = measure_trace(trace) return actual_length <= max_allowed_length def main(): traces_to_check = ["driver_to_mosfet", "ic_to_igbt"] for t in traces_to_check: if not check_trace_length(t, 50.8): # 单位:mm; 这里的数值只是一个例子 print(f"{t} 的长度超过了推荐范围") if __name__ == "__main__": main() ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值