【C语言】指针详解2

👑个人主页:啊Q闻       

🎇收录专栏:《C语言》           

 🎉道阻且长,行则将至

前言 

这篇博客分享的指针部分为与数组有关的指针知识,包括一位数组和二维数组

指针详解1的博客  【C语言】指针详解1-CSDN博客如果需要,可以去瞅瞅

一.数组名的理解 

数组名就是首元素的地址,但是有两个例外:

sizeof(数组名)sizeof中单独放数组名的时候,这个数组名表示整个数组,计算的是整个数组的大小,单位是字节。

&数组名,这里的数组名表示整个数组,取出的是整个数组的地址。 

当首元素地址加一时(arr[0],arr),其跳过的为数组一个元素的地址。

当&arr加一时,其跳过的为整个数组 。

二.使用指针访问数组 

 &arr[i]相当于&p[i]相当于&*(p+i)相当于p+i

arr[i]相当于p[i]相当于*(p+i)

三. 指针数组与数组指针

1.指针数组

1.初识指针数组

指针数组是存放指针的数组。

例如:int*p[10]

解释:因为p和[]先结合,说明该为一个数组,然后数组中存放的是地址。

 

2.指针数组模拟实现二维数组 

 指针数组可以模拟出二维数组,但它并不是完全的二维数组,因为二维数组在内存中的存储是连续的,而模拟的二维数组不是。

#include<stdio.h>
int main()
{
	int arr1[] = { 1,2,3,4,5 };
	int arr2[] = { 1,1,1,1,1 };
	int arr3[] = { 2,2,2,2,2 };
	int* parr[3] = { arr1,arr2,arr3 };//指针数组
	int i = 0;
	int j = 0;
	for (i = 0; i< 3; i++)
	{
		for (j = 0; j < 5; j++)
		{
			printf("% d", parr[i][j]);
		}
		printf("\n");
	}
	return 0;
}

2.数组指针 

数组指针即存放的是数组的地址,能够指向数组的指针变量

例如:int(*p)[10]

解释:因为p和*先结合,说明该为一个指针,然后指向的是大小为10个整型的数组。

四.数组的本质 

我们学习的数组可以分为一维数组和二维数组,我们分别讲述它的本质。

1.一维数组传参本质

一维数组传参本质上传递的是数组首元素的地址。

 如下:

 详解:1.因为传参时,传递的为数组首元素的地址,即为指针的大小(我的环境为64位),8/4=2.数组传参无法传过去整个数组,只能传首元素的地址,然后通过首元素顺藤摸瓜找到数组的所有元素。

2.我们计算数组的大小时,不要在调用函数中计算

 2.二维数组传参本质

二维数组传参本质是传递第一行这个一维数组的地址

如下:

对于二维数组,arr[i][j]相当于(*(*(p+i)+j) 

五.函数指针变量

1.初识函数指针

函数指针变量是用于存放函数地址的,未来能够通过地址调用函数

函数是存在地址的·,并且函数名就是函数地址

 2.函数指针变量使用 

其中int (*pf) (int x,int y) 为函数指针

六.函数指针数组 

把函数的地址放在一个数组中,那这个数组就叫做函数指针数组

 函数指针数组再转移表中也有用到,利用函数指针数组,减少了相同代码的重复出现

谢谢大家阅读,如果对你有帮助的话,给个三连吧😘 

相关推荐

  1. C语言-->指针详解

    2024-03-14 22:14:03       24 阅读
  2. C语言指针2

    2024-03-14 22:14:03       53 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-03-14 22:14:03       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-03-14 22:14:03       100 阅读
  3. 在Django里面运行非项目文件

    2024-03-14 22:14:03       82 阅读
  4. Python语言-面向对象

    2024-03-14 22:14:03       91 阅读

热门阅读

  1. Git的基础使用

    2024-03-14 22:14:03       44 阅读
  2. week07day03(power bi dax公式 )

    2024-03-14 22:14:03       40 阅读
  3. C#加密和解密、哈希

    2024-03-14 22:14:03       36 阅读
  4. SSE协议介绍

    2024-03-14 22:14:03       46 阅读
  5. 2024.3.13每日一题

    2024-03-14 22:14:03       38 阅读
  6. 04 数据结构之队列

    2024-03-14 22:14:03       41 阅读
  7. STM32day2

    STM32day2

    2024-03-14 22:14:03      35 阅读