首页 > 系统相关 >C++ 数组内存申请和释放、引用

C++ 数组内存申请和释放、引用

时间:2024-12-07 22:30:20浏览次数:9  
标签:初始化 arr cout int 引用 C++ 内存 数组 指针

在C++中如何实现对数组内存的申请和释放呢?同样使用关键字new、delete,可见以下代码例子:

#include<iostream>
using namespace std;

int* getGapList(int* arr, int size) {
    int* p = new int[size - 1]; //这里需要申请一个数组对应的内存,就可以返回去
    for (int i = 0; i < size-1; ++i) {
        p[i] = arr[i + 1] - arr[i];
    }
    return p;
}

int main() {
    int array1[] = {1,2,3,4};
    int *array2 = getGapList(array1, 4);
    for (int i = 0; i < 3; ++i) {
        cout << array2[i] << " ";
    }
    delete []array2;
    array2 = NULL;
    return 0;

}

C++中的引用:是给变量取一个别名,可以直接对变量的值进行操作!!

定义的格式见下:数据类型 & 变量名 = 变量

指针写起来要比引用复杂,可以见下面代码直观感受下:

#include<iostream>
using namespace std;

int main() {
    //int c = 1212;  这里是引用的
    //int &b = c;
    //b = 340;
    //cout << b << endl;
    //cout << c << endl;
    int c = 1212; // 这里是指针的
    int* b = &c;
    *b = 340;
    cout << *b << endl;
    cout << c << endl;
}

引用有两个特性:必须初始化,初始化以后无法修改。这个就是和指针的区别了,指针不初始化也可以的,引用比指针安全,不会出现空指针的问题,可见以下代码理解:

#include<iostream>
using namespace std;

int main() {
    int e = 5,b = 9;
    int& f = e; // 这里f就是被初始化为e,并且不会被修改了
    f = b;
}

标签:初始化,arr,cout,int,引用,C++,内存,数组,指针
From: https://blog.csdn.net/qq_43355454/article/details/144301564

相关文章

  • c++初识------for的循环变量的使用
    上次,我们讲了for循环,今天我们讲循环变量。废话不多说,直接进入正题。for循环语句的循环变量不仅仅可以用来控制循环运行的次数,还可以参与各种运算。举几个例子:观察数列:2 4 6 8 10...,输出数列的前n项。思路:第1步:因为要输出前n项,所以考虑用for循环。第2步:显......
  • 的士费用——c++加强选择结构
    呃上一章讲的是经典选择结构,这一章我们讲“加强版”的选择结构。所谓的“加强”,是在计算费用的基础上加上多余的钱数。我们来看道题:题目描述某市的士费起步价 8 元,可以行驶 3 公里。3 公里以后,按每公里 1.6 元计算,输入的士的公里数,请你计算顾客需付费多少元?输入格......
  • 四个人排序——c++选择结构提高
    这一章,我们要结束选择结构。判断四个数的大小并输出。我先来教大家一个判断两数大小的“捷径”: max(a,b); 这是两个数的大小,四个数的大小判断只能用if嵌套:if(……){if(……){……}}if嵌套,是在第一个if成立后执行下一个if。那么四个数比比大......
  • flutter中调用C++的库
    Dart调用C++的库安装ffi库flutterpubaddffi如果是C++必须使用C的方式导出接口import'dart:ffi';import'dart:io';import"package:ffi/ffi.dart";finalDynamicLibraryff=Platform.isWindows?DynamicLibrary.open("live666.dll")......
  • C/C++内存管理
    1. C/C++内存分布我们先来看下面的一段代码和相关问题constinta(此时an存放在栈上)charchar2[]="abcd"(此时是在栈上创建5个char类型大小的数组,并让用常量字符串来初始化数组内的内容,*char2就是数组第一个元素'a')costchar*pchar3="abcd"(此时const修饰是的char*,所......
  • c++实现Json库
    是的,在很久以前就开始想做这个东西,但是鸽了很久..终于又重新开始学了:pPart1tasktutorial里介绍了断言、怎么写宏、简单用cmake编译环境、常用的测试方法(TDD测试、单元测试)等。任务是:1.修正关于`LEPT_PARSE_ROOT_NOT_SINGULAR`的单元测试,若json在一个值之后,空白之后......
  • 【C++】程序流程控制(中)
    4.1.3switch语句作用:执行多条件分支语句语法:switch(表达式){case  结果1:执行语句;break;case 结果2:执行语句;break;case结果3:执行语句;break;...default:执行语句;break;}示例:代码:#include<iostream>usingnamespacestd;intmain(){   //给电影评......
  • 【C++】continue语句、goto语句
    1、continue 语句作用:在循环语句中,跳过本次循环中余下尚未执行的语句。继续下一次循环。注意:continue只能用于循环中。示例:代码://continue的用法#include<iostream>usingnamespacestd;intmain(){   //如果是奇数,则输出,否则不输出   for(inti=1......
  • leetcode 1493. 删掉一个元素以后全为 1 的最长子数组
    1493.删掉一个元素以后全为1的最长子数组法一:递推classSolution{public://在删掉元素的结果数组中,最长的且只包含1的非空子数组存在两种情况://1.这个子数组在原数组中本身就是连续的,无论删或者不删其他的元素,它都是最长的且只包含1的非空子数组;//2.这个子数组原......
  • 【C语言】--关于数组的一系列问题,看这篇就够了
    前言:在C语言中,数组是一种极为重要的数据结构,它为储存和处理多个相同类型的数据元素提供了便携而高效的方式。无论是处理简单的数值序列还是复杂的数据集合,数组都扮演着不可或缺的角色。下面,就跟博主一起来看看数组的一系列问题吧!文章目录:1.数组是什么?2.一维数组2.1......