C语言之数组指针与指针数组以及指针与数组的关系

絮:本来是理解数组指针,指针数组和指针与数组的关系的,本来今天想让自己加深理解一下,结果跳进坑来了,脑子有点乱。整理一下,让自己清醒一些。如果有人翻到这边博文我由衷给你一个建议,学习C语言一定要平心静气,不能急,所谓欲速则不达。
数组指针:是指一个指向数组的指针,它其实还是一个指针,只不过是指向数组而已;(就像字符指针,它只不过是一个:指向字符的指针)
注意:定义数组变量arr;arr与&arr的区别;
arr:表示数组首元素的地址也就是说等同于&arr[0];
&arr:表示整个数组的地址。

int arr[] = {1,2,3,4,5} ;
int (*p)[5] = &arr; //因为是数组指针,所以必须指向整个数组

指针与一维数组:话不多说上代码

int arr[] = {1,2,3,4,5};
int *p1 = arr;  //方式1,此时的p1为首元素的地址
int (*p2)[5] = &arr; //方式2,此时的p2位整个数组的地址

数组指针与二维数组:p是一个数组指针,数组指针是一个指针,指向一个数组。这里的p在(p)中,说明p是一个指针,指针的类型是int()[3],指针所指向的类型为int[3],所以指针p指向一个长度为3的数组。
再来比比叨叨一下:在二维数组(以下面的二维数组为例),*(arr+1)== arr[1] == &(arr[1][0]);

int arr[][3] = {1,2,3,4,5,6,7,8,9};
int (*p)[3] = arr; //此时的arr代表元素的首地址,也代表&arr[0](为第一行数组的地址);
//arr = &arr[0]

指针数组:首先它是一个数组,他的数组中装着指针;

int arr[] ={1.2.3};
int brr{} = {4,5,6};

int *p[] ={arr,brr};
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值