数组和指针变量的关系

为什么intarr=new int[10]
直接arr[i]访问数组了
arr不是一个指针变量吗
难道不应该
arr[i]访问吗

同一个符号有不同的用法,这很正常
好比同样的 * ,有乘法和指针两个作用,同样<<有算术移位和流操作

你看看这篇博文,里面有讲你这个问题:

  • 这有个类似的问题, 你可以参考下: https://ask.csdn.net/questions/7783333
  • 这篇博客也不错, 你可以看下函数原型中int *arr和int arr[]
  • 除此之外, 这篇博客: 【C语言】指针进阶第二站,指针数组中的 int* arr[]和二维数组的不同 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
  • int*arr数组里的元素arr1,arr2,arr3的地址是连续存放的

    这里设计到一个新概念:数组指针

    将在下一站🚌讲解!

    image-20220120174138946

    但是它们对应的各自的数组内数据并不连续

    如:arr1和arr2这两个数组各自元素的地址并不连续

    image-20220120173916988


  • 以下回答由chatgpt基于相关博客总结生成:

    数组和指针变量的关系在于,数组名实际上是指向数组首元素的指针。在C/C++中,使用数组名来访问数组的元素是合法的,因为数组名本身就可以被解释为一个指针。

    当我们定义一个数组时,编译器会为数组分配一段连续的内存,并返回指向数组首元素的指针。这个指针可以用来访问整个数组。

    考虑以下的示例代码:

    int* arr = new int[10];
    arr[0] = 10;
    

    在上面的代码中,我们使用new操作符动态分配了一个包含10个整数的数组,并将返回的指针存储在指针变量arr中。我们可以使用arr[0]来访问数组的第一个元素。

    在这种情况下,arr是一个指向整数的指针,而arr[0]是通过指针访问数组第一个元素的方式。由于数组名本身可以被解释为指针,所以我们可以直接使用arr[i]来访问整个数组的元素。

    因此,对于你的问题,你不需要使用指针变量来访问数组,而是可以直接使用arr[i]的方式来访问。