理解指针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循环实现指针数组模拟二维数组。

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

相关推荐
是隼人2 小时前
buuctf-pwn axb_2019_fmt32题解(学习过程持续更新)
c语言·学习·安全·pwn入门·ctf入门
老一岁2 小时前
c问题总结(2)
c语言·开发语言
奶茶树2 小时前
【C++】13. C++11新特性【上】
c语言·开发语言·c++·git·github
xys_6783 小时前
深挖C语言:动态内存管理
c语言·开发语言
wuminyu4 小时前
JDK21 FFM异步读取MSG_ZEROCOPY错误队列揭秘
java·linux·c语言·jvm·c++
拂拉氏4 小时前
【项目分享-知识讲解】 Linux第一个项目--进度条的实现与解析
c语言
江洋之道5 小时前
嵌入式LVGL UI架构实践:MVP分层 + 双链表路由,构建低耦合、易维护的嵌入式界面
c语言·架构·嵌入式·lvgl
小柯博客5 小时前
01 · 点亮 STM32MP25 的硬件视频编解码:VPU 与那些“安静“的坑
c语言·笔记·stm32·单片机·嵌入式硬件·嵌入式·视频编解码
zbyyd5 小时前
深入理解 Linux 文件 IO 与目录 IO:系统调用与库函数的本质区别
linux·c语言
末代iOS程序员华仔6 小时前
Codex + Figma 生成 Objective‑C (UIKit) 完整工作流
c语言·开发语言·figma