c - 在 C 数组表达式中使用时,如何理解 "add"(+) 运算符?

标签 c

我在理解第一个大括号之后的第四行代码时遇到了困难,

#include<stdio.h>
 int main()
 {
     int arr[] = {10,20,36,72,45,36};
     int *j,*k;

     j = &arr[4];
     k = (arr+4);
     if(j==k)
        printf("The two pointers are pointing at the same location");
     else
        printf("The two pointers are not pointing at the same location");

  }

我只是想知道第一个大括号之后的第四行代码,即 k = (arr+4); 的作用是什么?

由于k是一个指针,它应该指向具有“运算符地址”的东西?我仍然可以理解,如果它没有“运算符地址”,那么代码部分 k = (arr+4) 会做什么?

最佳答案

对于任何数组或指针 arr 和索引 i,表达式 arr[i] 完全等于 *(arr + i).

现在考虑到数组自然可以衰减为指向其第一个元素的指针,arr + i 是指向元素i 的指针。

关于c - 在 C 数组表达式中使用时,如何理解 "add"(+) 运算符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48703469/

相关文章:

c - C 中的结构初始化错误 : expected expression

c - printf() 中的任意数量的参数。这在C编程中叫什么?

使用 memcpy 的 dest 对象中的缓冲区溢出的编译器警告/错误

c - inb() 和 outb() Linux 系统调用的包装器

计算文件中的段落数

c - C 中的字符串验证 : Trying to ask for a new string when the old one has an invalid character

c - 删除末尾或开头的多余空格

C - 警告 [pe069] 整数转换导致截断

c - sizeof 的返回值

c - 计时器和系统日志组合将导致我的代码挂起