数组给指针赋值的特殊性
变量名的地址赋值给指针时,必须加取地址符&
int*p; int a=1; p=&a;//正确 p=a;//错误
数组名的地址赋值给指针时,给的是首元素地址,和传递参数是一样
int arr[10]; int *p; p=&arr; p=arr; p=&arr[0];//以上三行效果相同,p中保存的都是首元素地址
数组名的地址赋值给指针时,加&和不加,在某些时候意义相同,有些时候意义不同
#include<iostream> using namespace std; int main() { int arr[10]; cout<<(void*)(arr)<<endl; cout<<(void*)(arr+1)<<endl;//首元素地址加一,地址值加4 cout<<(void*)(&arr)<<endl; cout<<(void*)(&arr+1)<<endl;//数组整体的地址往后边移一位,地址值加40 }