理解指针2

数组名的理解

数组名字,表示数组首元素的地址,&arr0,arr。

但是有两个例外:

1.sizeof(数组名)------arr代表整个数组,计算的是整个数组的大小,单位是字节

2.&arr------arr代表整个数组,取出的是整个数组的地址

使用指针访问数组

arri可以访问数组,pi也可以访问数组。

本质上,pi等于*(p + i);arri等于*(arr + i)。

这其实只是写法不同,其实是一样的。因为数组元素的访问在处理的时候,是先转换成首元素的地址 + 偏移量来求出地址,然后再解引用访问的。

一维数组传参的本质

前情提要:数组名世首元素的地址。

很容易得到,一维数组传参的本质:传递的是数组首元素的地址。

函数形参可以使用指针接受首元素地址,如void text(int* p){...};也可以写成数组的形式。

冒泡排序

核心思想:两两相邻的元素进行比较。

二级指针

二级指针存放某个指针的地址。(不限制级数)

例如:

int* p = #//存放num的地址

int** p = &p;//存放指针变量p的地址。

(只有"存储在内存中且可被标识的对象"才有地址)

指针数组

指针数组是存放指针的数组,每一个元素是用来存放地址(指针)的,而地址(指针),又指向一块区域。

指针数组模拟二维数组

数组名是首元素地址,类型为int*,可以存放在指针数组parr中。

parrij,parri指向数组首元素地址,数组首元素地址j指向数组第j个元素。

用for循环实现指针数组模拟二维数组。

实际上不是是二维数组。因为每一行并非是连续的。

相关推荐
luj_17689 小时前
残熵算法实时化三大瓶颈突破
c语言·开发语言·网络·经验分享·算法
luj_176812 小时前
心形曲线轨迹控制三大关键技术
c语言·开发语言·c++·经验分享·算法
jimy115 小时前
C语言模拟对象、方法:“函数指针+结构体“复用函数指针指向的函数体
c语言·开发语言
三品吉他手会点灯16 小时前
嵌入式机器学习 - 学习笔记1.1.1 - 什么是机器学习?
c语言·人工智能·笔记·嵌入式硬件·学习·机器学习
小樱花的樱花17 小时前
Linux 线程的创建
linux·c语言·开发语言
东华万里1 天前
第36篇: 数据结构核心:栈与队列深度解析
c语言·数据结构·算法·大学生专区
鱼子星_1 天前
【C++】类和对象(下)——初始化列表,类型转换,static成员,友元,内部类,匿名对象,编译器的优化拓展
c语言·c++·笔记
似是燕归来1 天前
嵌入式工程师进阶指南:适配器编程设计模式一
c语言·stm32·适配器模式·嵌入式开发
skywalk81631 天前
设计并实现段言的 C FFI 绑定机制 @Trae
c语言·开发语言·python·编程
额鹅恶饿呃2 天前
C语言中的数据结构和变量
c语言·数据结构·算法