理解指针2

数组名的理解

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

但是有两个例外:

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

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

使用指针访问数组

arr[i]可以访问数组,p[i]也可以访问数组。

本质上,p[i]等于*(p + i);arr[i]等于*(arr + i)。

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

一维数组传参的本质

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

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

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

冒泡排序

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

二级指针

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

例如:

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

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

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

指针数组

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

指针数组模拟二维数组

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

parr[i][j],parr[i]指向数组首元素地址,数组首元素地址[j]指向数组第j个元素。

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

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

相关推荐
wdfk_prog5 小时前
正常关闭虚拟机时,不要点“关机”,而要点“关闭客户机”
linux·c语言·网络·ide·vscode
流年如夢7 小时前
单链表 -->增、删、查、改等详细操作
c语言·数据结构
handler019 小时前
【算法模板】最小生成树:稠密图选 Prim,稀疏图选 Kruskal
c语言·数据结构·c++·算法
怀庆同学11 小时前
C语言基础-单链表
c语言·开发语言
Byron Loong11 小时前
【基础】c,c++编译过程
c语言·c++
消失的旧时光-194312 小时前
为什么 Linux / Android 系统里全是 struct + 函数指针?—— 一篇讲透 C 语言如何实现面向对象(OOP)
android·linux·c语言
MZ_ZXD00112 小时前
springboot音乐播放器系统-计算机毕业设计源码76317
java·c语言·c++·spring boot·python·flask·php
182******208313 小时前
2026新手必看:C语言学到什么程度可以出去找工作
c语言·开发语言
我不是懒洋洋13 小时前
手写一个并查集:从原理到最小生成树实战
c语言·c++·经验分享·算法
50万马克的面包15 小时前
C 语言第18讲:预处理详解
c语言·开发语言·windows