8.5 指针和数组

指针常量指向的地方是固定的,不能对他再赋值。列如数组的名字指向数组的起始地址,就不能再指向其他地方了。不能对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;
}

猜你喜欢

转载自blog.csdn.net/yanyanwenmeng/article/details/81138848
8.5
今日推荐