Coisas a serem observadas ao usar nomes de array:
1. arr é equivalente a &arr[0] , indicando o endereço do primeiro elemento do array
2. &arr representa o primeiro endereço de todo o array
Conforme mostrado nas três primeiras linhas da figura, os resultados dos dois são iguais e ambos representam endereços, ou seja, ponteiros, mas a extensão dos ponteiros é diferente.
Explicação específica:
Código anexado:
#include <stdio.h>
int main()
{
int arr[3] = {1,2,3};
//数组名是数组首元素的地址==&数组名[0]
printf("%p\n", arr); //0053F7FC
printf("%p\n", &arr[0]); //0053F7FC
//&数组名:整个数组的首地址
printf("%p\n", &arr); //0053F7FC
//数组名和&数组名的区别
printf("%p\n", arr+1); //0053F800
printf("%p\n", &arr+1); //0053F808
return 0;
}