C语言 知识点总结【六】——了解各种指针的类型

本文详细介绍了数组指针、字符指针、函数指针(包括回调函数)、函数指针数组以及结构体指针的概念和用法,通过实例演示了它们在C语言中的实际运用,旨在帮助程序员更好地理解和掌握这些关键概念。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Hello,大家好!上一章我们总结了二级指针、指针数组、还有一些由于程序猿的操作不当导致的野指针和悬空指针,这一期我们来介绍一些其他的指针。

数组指针

听名字,数组指针?那它是数组还是指针呢?了解的小伙伴都知道上一章我们说指针数组是数组,那这个数组指针就是指针呗,没错!数组指针就是指针,它是一个指向数组的指针。

先看优先级()> [ ] > *,所以如下图:(【注】:必须要确保 * 优先与p结合)

//p1是数组,数组的10个元素,每个元素的类型为int*,p1是指针数组
int* p1[10];

//p2是指针,指针指向的是数组,数组中10个元素的类型是int,p2是指针
int (*p2)[10];

 p2是指针变量名,它存放着数组的地址;而p1只是一个数组名。

字符指针

char* pc="abcd";//这里的pc就是字符指针,但是并没有吧abcd\0存放在pc中,而是首字符的地址

printf("%c\n",*pc);//a
printf("%c\n",pc[0]);//这里输出的结果也是a

printf("%c\n",*pc);//a
printf("%s\n",pc);//abcd

这里的pc中存放的是字符串“abcd”的首元素地址,所以pc就可以说是字符指针,类型是char*;而代码的最后一行,可以通过首元素的地址访问并打印整个字符串的内容。

函数指针

前面我们了解了数组指针、字符指针...,那函数指针就是一个指向函数的指针,它可以用来存储和调用函数的地址,具体是怎么操作的呢,我们来看一组代码:


#include <stdio.h>
int max(int x, int y)
{
    return x > y ? x : y;
}
int main(void)
{
    // p 是函数指针,&可以省略
    int (*p)(int, int) = &max;  
    int a, b, d;
    printf("请输入两个数字:");
    scanf("%d %d&#
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

我为IT舔砖Java

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值