#include<iostream>
#include<cstdio>
using namespace std;
int main()
{
int a[]={1,2,3,4,5};
int *p=a; //实际上p指向a数组的首地址
char bb[]="hello";
int len_char=sizeof(bb)/sizeof(bb[0]);
cout<<len_char<<endl;//6
int len_int=sizeof(a)/sizeof(a[0]);
cout<<len_int<<endl;//5 注意int 数组和char 数组的不同
for(int i=0;i<len_int;i++)
{
//cout<<*(p+i)<<" ";
cout<<*(a+i)<<" ";//两个都行
}
cout<<endl;
int b[10];
int *q=b;
for(int i=0;i<sizeof(b)/sizeof(b[0]);i++)
cin>>*q++;
for(q=b;q<(b+sizeof(b)/sizeof(b[0]));)//输出之前必须让q重新指向b,即指向b的首地址
cout<<*q++<<" ";//自右而左结合 *(q++)
cout<<endl;
for(q=b;q<(b+sizeof(b)/sizeof(b[0]));q++)//每次输出之前必须让q重新指向b,即指向b的首地址
cout<<*q<<" ";
cout<<endl;
system("pause");
return 0;
}
用指针变量作函数形参接收数组地址,看下面的例子:
数组名代表数组首元素的地址,用数组名作函数的参数,传递的是数组首元素的地址。
#include<iostream>
using namespace std;
void select_sort(int *a,int len)
{
int t;
for(int i=0;i<len-1;i++)
for(int j=i+1;j<len;j++)
{
if(*(a+i)>*(a+j))
{
t=*(a+i);
*(a+i)=*(a+j);
*(a+j)=t;
}
}
}
int main()
{
int a[]={3,-1,0,89,73,-43,22};
int len=sizeof(a)/sizeof(a[0]);
select_sort(a,len);
for(int i=0;i<len;i++)
{
cout<<a[i]<<" ";
}
cout<<endl;
system("pause");
return 0;
}
C++编译系统将形参数组名一律作为指针变量来处理。