指针数组和数组指针

有任何不懂的问题可以评论区留言,能力范围内都会一一回答

1.指针数组,是数组,但是它的元素都是指针。

#define _CRT_SECURE_NO_WARNING
#include <stdio.h>
int main(void) {
    int a = 3;
    int b = 4;
    int c = 5;
    int* arr[3] = { &a,&b,&c };
    printf("%d\n%d\n%d\n", *arr[0], *arr[1], * arr[2]);
    return 0;
}

我么可以通过对指针数组简引用得到指针数组元素所指向的值

但这可能听起来很无趣

于是我们也有另一种有趣的用法

那就是用指针数组去模拟二维数组

#define _CRT_SECURE_NO_WARNING
#include <stdio.h>
int main(void){
	int arr1[5] = { 1,2,3,4,5};
	int arr2[5] = { 2,3,4,5,6};
	int arr3[5] = { 3,4,5,6,7};
	int* arr[] = { &arr1,&arr2,&arr3 };
	for (int i = 0; i < 3; i++)
	{
		for (int j = 0; j <5; j++)
		{
			printf("%d\n", *(*(arr + i) + j));
		}
	}

	return 0;
}

以上图片来自于比特鹏哥

这个地方是指针数组,只要数组元素是地址即可,也可以是数组的地址或者是指针的地址,这个地方我们把几个维数组的地址放到一个指针数组中可以模拟二维数组

当然各位有兴趣也可以去试试用指针数组模拟三维数组可不可以。

2.数组指针,数组指针,是指向数组的指针,是指针

表示形式

#define _CRT_SECURE_NO_WARNING
#include <stdio.h>
int main(void) {
    int arr[4] = { 1,2,3,4 };
    int(*p)[4] = &arr;
    printf("%d",*(*p+1));
    return 0;

以上就是数组指针的用法,括号内的*p说明是p是一个指针,去掉括号的部分是int [4]说明p指针指向的类型是int[4](也就是数组)

p的类型就是把p去掉剩下的,也就是int(*)[4]

本质上指针数组和数组指针这个知识点单独并不是很难,总的知识点基本就这些了

后面会将指针的知识点一起出几期每日好题,你就会知道什么是痛苦了

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值