学习c++第一天(自己看)

引用变量:就是变量的别名,并没有开辟新的空间
形参可以使用"引用",避免赋值过程,提高程序的执行效率
格式:int&d=a,d是引用变量,a是某个变量,d是a的别名
其次 引用做为函数返回值时,也可以避免值拷贝,同时函数返回值是引用还可以作为左值使用。
函数如下
     #include <iostream>
using namespace std;
int add(int* const a, int* const b)
{
    //a++;
    return *a + *b;
}
//永远不要返回一个局部变量的地址或引用。
static int f;
//函数形参使用引用可以避免值的拷贝,返回值使用引用,不仅可以避免值的拷贝,同样也可以作为左值使用。
int& add(int& a, int& b)
{
    f = a + b;
    return f;
}
int main()
{
    int a = 100;
    int b = 200;
    add(a,b) = 3000;意思是  int&f =add(a,b) = 3000,int&f=3000;f成了3000的别名
    cout << f << endl;此时f=3000;
    return 0;
}
总结一下:引用与指针的一些特点区别:
1:从编译器角度来讲:
1.1:引用就是一种升级版的指针。
2:从语法形式来讲:
2.1:引用是引用的是已经存在一块合法的空间。
2.2:引用变量即是引用空间的变量的别名!!!!!!!
2.3:指针可以是一个野指针,他可以指向任何的地方。如果在C++中单纯使用指针,很容易把程序写的不堪一击。
(内存很容易被写飞!!!!所以要使用引用)
2.4:指针可以进行无限次的赋值。
2.5:引用只可以被引用一次

C++的函数重载:是一种多态机制:静态多态,也叫做编译时多态
多态:同名函数不同的实现形式
int add(int a, int b)
{
    return a + b;
}
float add(float a, float b)
{
    return  a + b;
}

string add(string a, string b, string c)
{
    return a + b + c;
}
在底层实现中是addii,addff,addnst
就是在编译时,编译器会根据函数的行参的类型,个数,顺序不同,
而生成的一个不同的函数,最终的调用还是C中的函数方式的调用。


6.1C++中函数参数默认值语法:
底层实现函数参数从右网左依次赋值,不可以跳跃


C++内联函数:
内联函数格式
lnline int add(int a,int b){

}
可以内联函数特点:1代码简短
2无循环
3无耗时操作
4无回归函数
内联函数再编译时会直接展开,而不是执行函数调用的几个阶段
函数调用阶段1实参入栈
2开辟栈帧
3返回值返回
4栈帧同步
内联函数的代价:可执行代码的膨胀

C中取址运算符的拓展:
  int arr[3] = {1,2,3};
    int* parr = arr;
    cout << parr[2] << endl;(我:也就是用一次取地址符对应的就要加一个*,那个指针表型形式只是int(*p)[3]=&arr;
    //在C++中是严格类型匹配的,如果不匹配则直接报错。
    int (* parr1)[3] = &arr;
    cout << **parr1 << endl;


&运算符获取结构体或者类成员函数指针的方式
typedef  void (*pfunc)();//定义一个函数指针
struct A
{
    void showA()
    {
        cout << "22081班同学你好!!!" << endl;
    }
};
    A obj_a;
    //&运算符获取结构体或类成员函数指针的方式:
    void (A::*pfunc1)() = &A::showA;函数指针指向里面的那个函数
    (obj_a.*pfunc1)();

 const修饰符在C、C++中的异同:
const int b=6;
b——》只读变量,直接修改会出错,但可以指针强转改
  const int* p1 = &a;
  int* const p2 = &a;(这两个就不用说了);

着重说一说const int a=100;
这个出现在程序中,会直接保存到系统的符号表中,不在原来的a的地址中了
只要是遇见a,就是100,就算用*p改了之后,*p=200;a还是等于100;,是因为a在系统的符号表里呢,
取a就直接在符号表里面取了,但是加了volatile之后,就可以使用指针改了,就是不在那个符号表里面了,
这样定义const int volatile a = 100;

using的作用::typedef int  int32《===》using int32=int

其次就是struck a{
默认是public。如果里面没有东西,就是一个字节大小,如果有就是按照结构体对齐来说,
其次函数不占用这里面的大小,函数实在文本段的
}
其次就是struck a{
默认是private。如果里面没有东西,就是一个字节大小,如果有就是按照结构体对齐来说,
其次函数不占用这里面的大小,函数实在文本段的
}


c和c++定义结构体变量
struct STU stu
STU stu

智能网联汽车的安全员高级考试涉及多个方面的专业知识,包括但不限于自动驾驶技术原理、车辆传感器融合、网络安全防护以及法律法规等内容。以下是针对该主题的一些核心知识解析: ### 关于智能网联车安全员高级考试的核心内容 #### 1. 自动驾驶分级标准 国际自动机工程师学会(SAE International)定义了六个级别的自动驾驶等级,从L0到L5[^1]。其中,L3及以上级别需要安全员具备更高的应急处理能力。 #### 2. 车辆感知系统的组成与功能 智能网联车通常配备多种传感器,如激光雷达、毫米波雷达、摄像头和超声波传感器等。这些设备协同工作以实现环境感知、障碍物检测等功能[^2]。 #### 3. 数据通信与网络安全 智能网联车依赖V2X(Vehicle-to-Everything)技术进行数据交换,在此过程中需防范潜在的网络攻击风险,例如中间人攻击或恶意软件入侵[^3]。 #### 4. 法律法规要求 不同国家和地区对于无人驾驶测试及运营有着严格的规定,考生应熟悉当地交通法典中有关自动化驾驶部分的具体条款[^4]。 ```python # 示例代码:模拟简单决策逻辑 def decide_action(sensor_data): if sensor_data['obstacle'] and not sensor_data['emergency']: return 'slow_down' elif sensor_data['pedestrian_crossing']: return 'stop_and_yield' else: return 'continue_driving' example_input = {'obstacle': True, 'emergency': False, 'pedestrian_crossing': False} action = decide_action(example_input) print(f"Action to take: {action}") ``` 需要注意的是,“同学”作为特定平台上的学习资源名称,并不提供官方认证的标准答案集;建议通过正规渠道获取教材并参加培训课程来准备此类资格认证考试
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值