当我运行这段代码时出于某种奇怪的原因:
int func(int arr[],int n){
int a = *(&arr + 1) - arr;
printf("%d",a);
}
我得到一个地址,
当我在 main 中运行相同的代码时,我得到了数组的长度。
知道为什么吗?
我在 main 中运行它,它给了我一个数组的长度,当我在一个函数中运行它时,它给了我一个地址。
这个函数声明
int func(int arr[],int n){
由编译器调整为
int func(int *arr,int n){
另一方面。作为参数表达式传递给函数的数组被隐式转换为指向其类型 int *
.
所以在函数中你实际上处理的是指针而不是数组。