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

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

相关推荐
爱读书的小胖9 小时前
Codewars:Rot13(C)解题分析
c语言·开发语言
Code_Solitude10 小时前
c语言:关于qsoet函数知识点
c语言·数据结构·算法
鸽鸽程序猿10 小时前
【项目】【在线判题系统】c端:竞赛报名
c语言·开发语言
H.莓飛11 小时前
【Linux】自主 Shell
linux·运维·服务器·c语言·开发语言·visual studio
爱读书的小胖12 小时前
Codewars:Last digit of a large number(C)解题分析
c语言·开发语言·r语言
想做小南娘,发现自己是女生喵12 小时前
第二周学习文档 Linux C 文件操作
linux·c语言·学习
Bluetooth73013 小时前
c语言变量的存储类别
c语言
lhbweilai18 小时前
分析FreeRTOS内核对象API的源码实现(四)
c语言·stm32·单片机
inrichtt21 小时前
第八课时:SPI总线揭秘:四线全双工通信的奥
c语言·数据结构·stm32·单片机·嵌入式硬件
wuminyu1 天前
JMM学习总结:深入理解happens-before关系
java·linux·c语言·jvm·c++