嵌入式学习day03

本文详细介绍了C++中的const关键字用于定义常量和指针,以及其在函数参数中的应用。同时讲述了volatile关键字在内存访问优化、多线程数据一致性中的作用。最后讨论了如何通过排序判断字符串是否可以通过重排得到另一个字符串。

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

每日面试题

1. const关键字的作用?
const用于定义常量。可与指针进行搭配使用,用于定于指针本身或指针指向的内容是常量。
①定义常量

int main()
{
    const int a = 10;
    a = 20;
    cout << a;
}
//会报错error: assignment of read-only variable 'a',因为a为常量不可被修改

②定义指针本身是常量

const int *ptr = &some_variable;  
// *ptr = 5; // 这行代码是错误的,因为 *ptr 是常量

③定义指针指向的内容为常量

int value = 10;  
int *const ptr = &value;  
// ptr = &another_variable; // 这行代码是错误的,因为 ptr 是常量  
*ptr = 20; // 这是正确的,因为 ptr 指向的内容不是常量

④可以定义不可修改的函数参数

void someFunction(const int param) {  
    // 这里不能修改 param 的值  
}

2. volatile关键字的作用
volatile关键字的作用是告诉编译器不要对某个变量的访问进行优化,具体作用有以下几点:
①确保每次都从内存中读取变量的值: 通常来说,变量的值会被缓存在寄存器中以提高访问速度,但对于使用volatile来修饰的变量来说,会直接读取内存中的值,而不是读取缓存中的旧值,这样做可以使得程序能够获取到变量的最新值。
②阻止编译器的优化: 通常来说编译器会进行各种优化以提高代码的执行效率,但有时这些优化会忽略变量的实际变化。使用volatile修饰可以确保每次对于变量的访问都是基于实际的内存读取和写入操作。
③适用于多线程和并发环境: 在多线程或并发编程环境中,多个线程可能同时访问和修改同一个变量的值。使用volatile关键字可以确保每个线程都能看到该变量最新的值,从而避免数据不一致的问题。

每日算法 判定是否为字符重排

给出两个字符串s1和s2,判断其中一个字符串重新排列后是否可以变成另外一个字符串。
我的思路就是,如果两个字符串的长度都不同,不可能重排,直接返回false。之后对字符串内的元素直接sort排序,然后比对各元素是否相同即可。

class Solution {
public:
    bool CheckPermutation(string s1, string s2) {
        if(s1.size() != s2.size()) return false;
        sort(s1.begin(),s1.end());
        sort(s2.begin(),s2.end());
        for(int i=0;i<s1.size();i++){
            if(s1[i] != s2[i]) return false;
        }
        return true;
    }
};
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值