C++ (&valName)[index] 方式访问数组

Posted zpf1813763637

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C++ (&valName)[index] 方式访问数组相关的知识,希望对你有一定的参考价值。

(&valName)[index] 是 C++ 中的数组访问方式之一,它表示访问一个由 bytes 数组的第四个元素开始的新数组。具体来说,这个表达式中的 &bytesbytes 数组的地址作为一个指针返回,然后在这个指针上进行偏移量的计算。因为 bytes 数组的类型是 char,所以这个偏移量是以字节为单位计算的。

例如,如果有一个 bytes 数组,长度为 10,它包含了一些二进制数据:

char bytes[] = 0x12, 0x34, 0x56, 0x78, 0x9a, 0xbc, 0xde, 0xf0, 0x11, 0x22;

那么,(&bytes)[4] 就表示一个新的 char 类型的数组,它包含了从 bytes 数组的第四个元素(即 0x78)开始的所有元素。因此,(&bytes)[4] 等价于:

char new_bytes[] = 0x78, 0x9a, 0xbc, 0xde, 0xf0, 0x11, 0x22;

需要注意的是,这种访问方式非常危险,容易造成数组越界,导致程序崩溃或产生未定义行为。因此,在实际编程中应该避免使用这种访问方式,而是使用更安全的方式访问数组元素,例如使用下标或指针运算符。

排序算法 C++实现

一、插入排序 (Insertion Sort)

void insertion_sort(vector<int>& number)
    int length = number.size();
    if(length <= 1) return;
    
    for(int index = 1; index < length; ++index)
        int temp = number[index];
        int compare = index;
        for(; compare > 0 && temp < number[compare-1]; compare--)
            number[compare] = number[compare-1];
        number[compare] = temp;
    

 

二、 快速排序(Quick Sort)

void quick_sort(vector<int>& number, int begin, int end)

    if(begin >= end) return;
    int mid = (begin+end)/2, pivot = number[mid];
    swap(number[mid], number[end]);
    
    int temp = begin - 1;
    for(int i = begin; i < end; i++)
        if(number[i] <= pivot)
            swap(number[++temp], number[i]);
    swap(number[++temp], number[end]);
    
    quick_sort(number, begin, temp-1);
    quick_sort(number, temp+1, end);

 

 

 

示例代码:

#include <iostream>
#include <vector>

using namespace std;

void insertion_sort(vector<int>&);
void quick_sort(vector<int>&, int, int);

int main()

    vector<int> numbers = 34,8,64,51,21,1,23,45,90,47,35,70,134,152,251,540;
    // 1 8 21 23 34 35 45 47 51 64 70 90 134 152 251 540
    
    // insertion_sort(numbers);
    // quick_sort(numbers, 0, numbers.size()-1);
for(int num : numbers) cout << num << ; return 0;

 

以上是关于C++ (&valName)[index] 方式访问数组的主要内容,如果未能解决你的问题,请参考以下文章

排序算法 C++实现

不能在函数 C++ 中使用覆盖

QVector<int>[index] 返回另一个 QVector?

c++手写堆

C++ 使用 std::sort 处理多维字符串数组

排列组合之组合问题 网易深度学习工程师面试题 C++ 使用10方法