当前位置: 首页 > article >正文

指针的介绍2后

1.二级指针

1.1二级指针的介绍

二级指针是指向指针的指针

#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>

int main()
{
	int a = 100;
	int* pa = &a;
	int** ppa = &pa;

	printf("a        = %d\n", a);
	printf("&a(pa)   = %p\n", pa);
	printf("&pa(ppa) = %p\n", ppa);
	return 0;
}

上面代码的意思是

打印 a、 a的地址、pa的地址

如下图:

记忆方法:

(1)int *pa = &a

*表示pa是一个指针,

int表示pa指向的内容是 int 型

(2)int **pa = &pa;

右边的*表示pa是一个指针

int * 表示pa指向的内容是 int* 型,

即指向一个指针

(3)此时,pa是一级指针,ppa是二级指针

当然还有三级指针 int***pppa = &ppa

一般不超过三级

 2.二级指针的使用

#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>

int main()
{
	int a = 100;
	int* pa = &a;
	int** ppa = &pa;

	printf("%p\n", pa);
	printf("%p\n", *ppa);
	return 0;
}

1.二级指针解引用一次,就可以拿到一级指针的地址

*ppa == pa

2.二级指针解引用两次,就拿到了一级指针所指向的内容

a == *pa == **ppa

2.指针数组

1.指针数组的介绍

 我们知道,

字符数组是一个数组,它里面存放着字符

整型数组是一个数组,它里面存放着整型

所以

指针数组是一个数组,它里面存放着指针

当然,二级指针也可以被存放

2.指针数组的使用

2.1指针数组模拟二位数组

void test()
{
	int arr1[3] = { 0,1,2 };
	int arr2[3] = { 3,4,5 };
	int arr3[3] = { 6,7,8 };
	int* arrs[3] = { arr1,arr2,arr3 };

	for (int i = 0; i < 3; ++i)
	{
		for (int j = 0; j < 3; ++j)
		{
			printf("%d ", arrs[i][j]);
		}
		printf("\n");
	}
}

指针数组arrs中存放着三个数组的数组名

数组名就是数组首元素的地址

然后拿着每个数组的数组名进行遍历即可

arrs[i][j] ==  *(*(arrs + i ) + j)


http://www.kler.cn/a/522712.html

相关文章:

  • Android createScaledBitmap与Canvas通过RectF drawBitmap生成马赛克/高斯模糊(毛玻璃)对比,Kotlin
  • RPC是什么?和HTTP区别?
  • JavaScript_02 表单
  • 求解旅行商问题的三种精确性建模方法,性能差距巨大
  • 不只是mini-react第二节:实现最简fiber
  • 思维练习题
  • 【Rust自学】15.7. 循环引用导致内存泄漏
  • Spring AOP原理
  • 智能门锁开发系列:从设计到实现的全面解析
  • Mybaties缓存机制
  • 装饰SpringMVC的适配器实现响应自动包装
  • 每日一题 429. N 叉树的层序遍历
  • WebPages 表单:设计与实现指南
  • react-bn-面试
  • 使用国内镜像加速器解决 Docker Hub 拉取镜像慢或被屏蔽的问题
  • 学习第七十六行
  • 备份与恢复管理系统深度解析及代码实践
  • GitHub 仓库的 Archived 功能详解:中英双语
  • 炫酷JavaScript文本时钟
  • 跨平台物联网漏洞挖掘算法评估框架设计与实现项目后期研究方案
  • 008 mybatis缓存
  • 全志 视频输入组件的使用
  • 强化学习在自动驾驶中的实现与挑战
  • RocketMQ优势剖析-性能优化
  • 安卓入门四十二 过渡动画
  • RAG制作客服机器人,文档用表格还是QA问答对?