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

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

相关推荐
wuyk55511 小时前
Keil工具链-第05讲-启动文件与__main到底做了什么
c语言·stm32·单片机·嵌入式硬件·物联网
Navigator_Z19 小时前
LeetCode //C - 1317. Convert Integer to the Sum of Two No-Zero Integers
c语言·算法·leetcode
冻柠檬飞冰走茶20 小时前
字母移动游戏题解:贪心求最长可保留连续子串(附 C 实现)
c语言·开发语言·数据结构·算法·动态规划
Hhy_11071 天前
《C++深度解构06》手撕 string —— 从底层内存管理到深浅拷贝彻底吃透
c语言·开发语言·c++·学习·visual studio
曦樂~1 天前
Cpp面筋
c语言·c++
HUANGZHENXUAN1232 天前
最大子矩阵和:从 O(n⁴) 到 O(n³) 的列压缩 + Kadane
c语言·前端
§ꦿCFོ༉2 天前
嵌入式八股文—C语言入门学习(二)
c语言·学习·嵌入式·编程语言
David猪大卫2 天前
【Linux修炼】环境变量、进程地址空间
linux·c语言·经验分享·笔记·学习·ubuntu·centos
Zwawa3 天前
两根线怎么挂住一堆设备:I2C 协议原理
c语言·单片机·嵌入式
武子康3 天前
h3.c 的两个权重槽,怎样把内存压力换成 SSD 等待
c语言·人工智能·agent