指针是变量,数组名是常量

作者在 2008-09-13 11:05:34 发布以下内容
  我们知道声明 int a=1;可以做a++这样的操作,在这个过程中,a是不断变化的。指针同样也可以,因为指针是一个变量。但是如果是数组名就不可以了,因为数组名是一个常量。
例如:
int a=1;
a++;
这是正确的;
int *p=&a;
cout<<*(p++)<<endl;
这也是正确的;但是
int a[10];
cout<<*(a++)<<endl;
这是错误的,因为数组名a在不断的变化,但他是一个常量。但是可以改为:
int a[10];
int i;
for(i=0;i<10;i++)
cout<<*(a+i)<<endl;


我们再来看一个例子。

#include<iostream.h>
const int N=6;
void print(const int *p,int n);
void main()
{
int array[N];
for(int i=0;i<N;i++)
cin>>array[i];
print(array,N);
}

void print(const int *p,int n)
{
cout<<"{"<<*p;
for(int i=1;i<n;i++)
cout<<"."<<*(p+i);
cout<<"}"<<endl;
}

在主函数调用print(array,N)时,将数组名array传递给常量指针p。大家不要误认为P是数组名,array赋值给p而将p的值改变,其实在计算机处理的时候就把p看成是指针。
默认分类 | 阅读 4098 次
文章评论,共0条
游客请输入验证码
浏览78541次