指针常量指向的地方是固定的,不能对他再赋值。列如数组的名字指向数组的起始地址,就不能再指向其他地方了。不能对a进行赋值,但是可以用a赋值给其他(T *)类型的指针。即a不能放在等号左边。
sizeof(p) = 4
int p[ ] 无从知晓他的大小,系统会将他看做指针看待。p[ ] <=> * p。
#include<iostream>
using namespace std;
int main()
{
int a[200];//a为(int * )类型
*(a + 1) = 10;
cout << a[1] << endl;//10
int *p;// *p为int类型,p为int * 类型
p = a;//p指向了a[0]
*p = 10;//a[0] =10
*(p+1) = 20; //a[1] = 20;
for(int i = 0; i < 10; ++i)
*(p + i) = i;//a[i] = i;
++p;//p指向a[1]
cout << p[0] << endl;//1
cout << p[1] << endl;//2
p = a + 6; //p指向a[6]
cout << *p << endl;//6
return 0;
}
p和a都是(int *)类型;
p = a; //p就指向了a的起始地址
扫描二维码关注公众号,回复:
2326961 查看本文章
#include<iostream>
using namespace std;
void reserve(int *p, int size)// void reserve(int p[], int size)
{
for(int i = 0; i < size/2 ; ++i)
{
int tmp = p[i];
p[i] = p[size - i -1];
p[size - i - 1] = tmp;
}
}
int main()
{
int a[5]={1,2,3,4,5};
reserve(a,sizeof(a)/sizeof(int));//a是int *类型的,和p一样
for(int i = 0; i < 5; ++i)
//cout << *(a + i) << " ";
cout << a[i] << " ";
return 0;
}