c - 访问数组元素

标签 c arrays pointers

<分区>

int arr[]= {5,15,1,3,4};

    // Since we know arr and &arr are both address of first element of array.
    // I read somewhere that &arr+1 = baseaddress + sizeof(arr).
    // arr+1 = address of second element
    // am curious to know the diff. between two semantics.
printf("%d %d\n",*(arr+1), *(&arr+1));

我知道这很简单,但我很想弄清楚这个概念。

最佳答案

arr是数组类型,&arr是指针(数组)类型。它们的类型不一样。

这个&arr+1是指针运算。将 &arr 增加 1 将使您到达数组中的最后位置 + 1。示例:

   |0|1|2|3|4| |
 arr^         ^
        &arr+1^

关于c - 访问数组元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19475090/

相关文章:

c - 在 ANSI C 的通用访问器函数中使用空指针

c++ - 在运行时区分指针和引用 ANSI C++

使用C将当前毫秒转换为时间格式

C char 数组、指针、malloc、free

c - 使用 static 而不是 malloc - C 语言

c++ - Printf 不打印输出

c - 动态分配数组,无需 malloc 和 calloc

php - 取多维数组的第一层

arrays - 将数组分为 k 个或更少的子部分,以最小化每个部分的最大总和

c++ - 在 C++ 中应用删除运算符后,地址会发生什么变化?