码迷,mamicode.com
首页 > 编程语言 > 详细

c/c++ (疑1)数组和指针

时间:2015-03-30 11:24:45      阅读:108      评论:0      收藏:0      [点我收藏+]

标签:

指针:

很多人 都知道 指针是保存变量的地址,有时候想想还是挺迷惑的。

数组:

数组名实际就是一个地址,指向数组的首地址。


疑问1 那么我如何使用指针来操作数组呢?

int main()
{
	int arr[3]={3,5,9};
	int *ptr1[3] = {nullptr};

	int (*ptr2)[3] = &arr;//ok
	*ptr1 = &arr[0];//ok
	//*ptr1 = &arr//error

	for(int i=0; i<3;i++)
	{
		cout<<(*ptr2)[i]<<endl;//ok
		cout<<ptr2[i]<<endl;
		cout<<(*ptr1)[i]<<endl;//ok
		cout<<ptr1[i]<<endl;
	}
	//printf("%d", sizeof(short));
	system("pause");
	return 0;
}
技术分享


如果还有疑问:

那么,数组指针 ,指针数组 看看下面的说明。

int *arry[10];       //指针数组
int (*arryp)[10];    //数组指针,因为数组指针指向数组,而数组也可看做是个指针,那数组指针可以理解为一个二 级指针
int a[10];             
arryp = &a;          //将数组地址个数组指针 
arry[0] = *arryp;    //arry[0]是一级指针,要将数组指针赋给指针数组,就要取内容,实际就是 arry[0] = a;

提示:数组分配是连续的地址,所以

*ptr1 = &arr[0];//ok
也可以连续取出值。

二级指针:

指针也是一个对象,对象就有自己的地址,那么指针也可以赋值给指针地址。

int  p1 = 100, *p2 = &p1 ;
	int **p3 = &p2;

	cout<<p1<<endl;
	cout<<*p2<<endl;
	cout<<**p3<<endl;

关系图如下:


p3--------------------------->p2----------------------------->p1(100)


引用:

引用本身自己不是一个对象,那么就不存在地址,那么也不存在指向引用的指针。

也说明了,存在指向指针的引用。


c/c++ (疑1)数组和指针

标签:

原文地址:http://blog.csdn.net/u010236550/article/details/42746743

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!