关于new操作符和指针变量与数组的关系

为什么intarr=new int[10]
可以直接用arr[i]去访问
arr不是一个指针变量吗
不应该
arr[i]访问嘛

[]有两个用法
一个是在数组定义或者new的时候分配长度
一个是之后访问下标对应的元素
不要混淆。

[]可以定义长度,如a[10]表示开一个长度为10的数组,里面可以存储10个元素
而[]里也可以填一个下标,如a[2]表示数组a的第三个元素,因为数组下标是从0开始的
一定记住,先定义,再使用!
比如下面这段代码:

#include<bits/stdc++.h>
using namespace std;
int main()
{
    int a[5]={0};//定义一个长度为5的数组,并初始化为0 
    a[0]=1;//将数组下标为0的值变成1 
    a[1]=1;//目前数组内,五个元素分别是:1 1 0 0 0 
    a[2]=2;//目前数组内,五个元素分别是:1 1 2 0 0 
    a[3]=a[1]+a[2];//a[1]=1,a[2]=2,a[3]=2+1=3
    a[4]=a[2]+a[3];//目前数组内,五个元素分别是:1 1 2 3 5
    cout<<a[4]<<endl;//输出a[4],即5 
    return 0;
} 
  • 你可以参考下这个问题的回答, 看看是否对你有帮助, 链接: https://ask.csdn.net/questions/671607
  • 这篇博客你也可以参考下:函数原型中int *arr和int arr[]
  • 除此之外, 这篇博客: 从键盘给数组录入数据,求数组内元素的累加和中的 创建一个int型数组,数组名为arr ,数组长度为7, 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
  • 
    int[] arr=new int[7];
    
    
  • 以下回答由chatgpt基于相关博客总结生成:

    问题解答:

    首先,我们先了解一下数组和指针的关系。

    在C/C++中,数组和指针有着密切的关系。数组是由相同类型的元素组成的集合,而指针是存储内存地址的变量。数组名本质上是一个指向数组第一个元素的指针。

    当我们使用int arr[10]定义一个数组时,内存中会分配一块连续的空间来存储这个数组的元素。此时,arr指向数组的第一个元素。

    当我们使用new操作符来动态分配内存时,会返回一个指向新分配的内存空间的指针。

    所以,当我们使用int arr = new int[10]来动态分配一个包含10个int类型元素的数组时, arr会指向这个新分配的内存空间的首地址。

    因此,我们可以使用arr[i]来访问数组中的元素。这是因为arr指向的是一块连续的内存空间(数组的第一个元素地址),而arr[i]可以被视为“从第一个元素地址开始向后移动i个元素大小的地址”,因此可以访问到对应的数组元素。

    代码示例:

    #include <iostream>
    using namespace std;
    
    int main() {
        int* arr = new int[10];
        for (int i = 0; i < 10; i++) {
            arr[i] = i;
        }
    
        for (int i = 0; i < 10; i++) {
            cout << arr[i] << " ";
        }
        cout << endl;
    
        delete[] arr;
        return 0;
    }
    

    输出结果:

    0 1 2 3 4 5 6 7 8 9
    

    在上面的示例中,我们使用new操作符动态分配了一个包含10个int类型元素的数组,并使用arr[i]来访问每个元素。最后,我们使用delete[]释放了动态分配的内存空间。