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

指针:

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

数组:

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


疑问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)


引用:

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

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


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值