我在理解第一个大括号之后的第四行代码时遇到了困难,
#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/