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

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

相关推荐
boonya3 小时前
一文读懂MCP:AI连接万物的“USB-C接口”
c语言·开发语言·人工智能
yashuk3 小时前
C语言条件编译三种方式及第一种方式的格式、作用与示例
c语言·程序设计·条件编译·代码示例·预处理程序
qeen873 小时前
【数据结构】栈及其C语言模拟实现
c语言·数据结构·学习·
我不是懒洋洋3 小时前
深入理解C语言指针:从一级指针到函数指针
c语言
熬夜敲代码的猫4 小时前
C/C++:内存管理
c语言·c++·动态内存管理
云泽8085 小时前
第十五届蓝桥杯大赛软件赛省赛C/C++大学B组
c语言·c++·算法·蓝桥杯
luoqice6 小时前
利用flv库读取flv文件时长c程序
c语言·开发语言
浅时光_c6 小时前
12 函数
c语言
小文数模6 小时前
2026 年MathorCup(妈妈杯)数学建模竞赛C完整参考论文(第一版)
c语言·数学建模·matlab