指针(二)

字符指针

字符指针是一种存储字符串(即字符数组)的内存地址的指针,可以通过字符指针访问和操作存储在内存中的数据。

下面来分析这个代码:一个字符数组str,ptr就是我所要讲的字符指针。字符指针同数组一样,得到了首元素的地址这个字符串(字符数组)其他的元素不需要再找。

上面这个代码再简写一下变成下面这个代码 :直接将字符指针指向字符串进行字符串打印。对比这两张,发现借助数组能够改变其中元素的值;但是当使用字符串字面量初始化字符指针时,不要尝试修改该字符串的内容,因为这样做可能会导致程序崩溃。

数组指针

顾名思义指向数组的指针,指向数组的指针意味着这个指针存储了数组首元素的地址,但它还包含了关于数组类型的信息(如数组的大小和类型【int (*) [10] ,指针变量这样放(*p)】)。数组指针常常和二维数组联系一起,数组指针int (*p)[10]等价于int [0][10](也就是(*p)等价于p[0])。

就举下面这个例子:arr是一个一维数组,也可以看作一个二维数组(一行十列),指针数组p地类型和大小是int (*)[10],因为(*p)等价于p[0],所以这就是数组指针的来源。

指针数组

指针数组是一种特殊的数组,它的每个元素都是一个指针,这些指针可以指向同类型的变量、数组或其他数据类型。指针数组在处理字符串、数组集合或动态数据结构时非常有用。

arr是一个指针数组,它有3个元素包含的是三个变量的地址,每个元素都是一个指向int的指针,所以需要对指针解引用才能打印指向的值。

对比一下字符串:不管是通过三个字符数组合成一个指针数组还是下面这个,字符指针数组都不需要进行解引用,因为字符串在C语言中是通过字符数组(通常以\0结尾)表示的,但通常通过指向数组首元素的指针来访问。

数组传参和指针传参

一维数组传参

二维数组传参

一维指针传参

二维指针传参

函数指针

函数指针:存储函数的地址,可以通过这个地址来调用函数。函数指针的声明需要指定函数返回值的类型、函数名(这里用指针名代替)以及函数的参数列表(包括参数的类型和数量)。但是,在声明函数指针时,我们不会给出函数名,而是使用指针名来代替。

相关推荐
2的n次方_18 分钟前
Runtime 内存管理深化:推理批处理下的内存复用与生命周期精细控制
c语言·网络·架构
嵌入小生00738 分钟前
标准IO---核心函数接口延续(嵌入式Linux)
c语言·vscode·vim·嵌入式·小白·标准io·函数接口
历程里程碑1 小时前
Linux20 : IO
linux·c语言·开发语言·数据结构·c++·算法
智者知已应修善业4 小时前
【洛谷P9975奶牛被病毒传染最少数量推导,导出多样例】2025-2-26
c语言·c++·经验分享·笔记·算法·推荐算法
小龙报5 小时前
【51单片机】从 0 到 1 玩转 51 蜂鸣器:分清有源无源,轻松驱动它奏响新年旋律
c语言·数据结构·c++·stm32·单片机·嵌入式硬件·51单片机
小武编程5 小时前
基于JL700N可视化SDK的MAC地址应用
c语言·tws耳机·杰理jl700n
凉、介6 小时前
VMware 三种网络模式(桥接 / NAT / Host-Only)原理与实验解析
c语言·网络·笔记·操作系统·嵌入式·vmware
wangjialelele6 小时前
Linux中的进程管理
java·linux·服务器·c语言·c++·个人开发
森焱森6 小时前
嵌入式硬件工程师应知 白银快速分析报告
linux·c语言·arm开发·嵌入式硬件·去中心化
czhaii7 小时前
单片机最佳入门多线程示例讲解
c语言·单片机