/**
*cppTest-3.0:指针相关-1(指针与一维数组)
*
*author 炜sama
*/
#include<iostream.h>
int whole[5];//全局变量一维数组的元素可以自动获得初值0!
void main()
{
cout<<"数组定义及初始化的问题-----------"<<endl;
int a[5]={0,1,2,3,4};//Java的定义不能指定数组长度5!
int b[]={0,1,2,3,4};//不指明数组长度。与Java的一样!
int c[5]={0,1*2};//不全部初始化
int len=5;
//一个变量等价于一个长度为1的数组!
cout<<len<<","<<(&len)[0]<<","<<*(&len)<<","<<*&len<<endl;
//int d[len]={0,1,2,3,4};//错误!定义数组时不能用变量表达式表示长度。Java可以!
a[len-1]=4*4;//但是定义之后可以用变量表达式做下标
//b=a;//错误!数组不能直接赋值给数组。Java可以!
//b={0,1,2,3,4};//错误!b为常量,不能作为左值。Java也不行!
//b[5]={0,1,2,3,4};//错误!
int d[5];//自动局部变量一维数组的元素未初始化将会是随机值!
static int e[5];//静态局部变量一维数组的元素可以自动获得初值0!与C语言教材上说的相反!
for(int i=0;i<5;i++) cout<<d[i];cout<<endl;
for(int j=0;j<5;j++) cout<<e[j];cout<<endl;
for(int k=0;k<5;k++) cout<<whole[k];cout<<endl;
cout<<"数组元素及元素地址的表示----------"<<endl;
if(a==&a[0])
cout<<"a==&a[0]"<<endl;
else
cout<<"a!=&a[0]"<<endl;
if(a+1==&a[1])
cout<<"a+1==&a[1]"<<endl;
else
cout<<"a+1!=&a[1]"<<endl;
if(*a==a[0])
cout<<"*a==a[0]"<<endl;
else
cout<<"*a!=a[0]"<<endl;
if(*(a+1)==a[1])
cout<<"*(a+1)==a[1]"<<endl;
else
cout<<"*(a+1)!=a[1]"<<endl;
cout<<"数组元素、数组指针、数组空间名称、数组空间取值"<<endl;
cout<<"a[0]--"<<a[0]<<","<<a[0]+1<<","<<sizeof(a[0])<<endl;
int *pa=a;
cout<<"*pa--"<<*pa<<","<<*(pa+1)<<","<<sizeof(*pa)<<endl;
cout<<"pa--"<<pa<<","<<pa+1<<","<<sizeof(pa)<<endl;
pa=&a[0];
cout<<"*pa--"<<*pa<<","<<*(pa+1)<<","<<sizeof(*pa)<<endl;
cout<<"pa--"<<pa<<","<<pa+1<<","<<sizeof(pa)<<endl;
cout<<"a--"<<a<<","<<a+1<<","<<sizeof(a)<<endl;
cout<<"&a--"<<&a<<","<<&a+1<<","<<sizeof(&a)<<endl;
//(int[5])* pas=&a;
}