指针的那些事情

谈到指针,除了常听到的整形指针、字符指针,还有函数指针、数组指针、常量指针,也有一些指针相关的指针常量、指针数组等等。是不是听着有点迷糊?

这里,我就指针的那些事,谈谈我对它们的理解。以下谈到的都是一级指针!

1. 整形指针、字符指针

注意看,这些都是指针,但是前面的修饰词不一样。

整形指针 int* p;

字符指针 char *p;

2. 数组指针 & 指针数组

先给出C语言中对其的定义。

        a. 数组指针   char (*p)[10];

        说明:所谓数组指针,修饰词是数组,所以,是一个指针,该指针 指向 一个字符数组。

        b. 指针数组   char* p[10];  

        说明: 所谓指针数组,它本质是一个数组,数组当中存放的是char*类型的数据。

3. 常量指针 & 指针常量

首先说一下怎么快速的记住他们的区别,只需要按照命名的顺序来读,就可以很好地记忆(仅适用于常量指针和指针常量)。下面给出它们C语言中的定义,大家结合命名顺序+定义形式,好好理解一下。

        a. 常量指针   const int *p;

        说明:因为const的功能就是限定不可以修改,所以我们看到常量指针是先有const, 后有*p。而*p代表是内存中的值,也就是说,指针p指向的内存数据,是不可以通过指针来进行修改的。但是,指针的指向是可以变的。

                b. 指针常量   int* const p;

                说明:因为const的功能就是限定不可以修改,所以我们看到指针常量是先有了int *指针,再有的const修饰p 所以p的值(指向的内存地址) 是不可以修改的。也就是const限制的是指针p的值,但是没有限定p指向的内存地址里的数据,所以内存的数据可以修改

4. 函数指针

所谓的函数指针,就是一个指针,指向的是一个函数。其通用的数据格式如下

Type (*name)(Type,Type...)

Type可以是void、int、char、float等等

Eg: void (*p)(char*)---在此处定义了一个函数指针p,指向一个形参为字符指针返回值为void类型的函数。

下面给出具体的使用样例。

#include <stdio.h>
#include <string.h>
#include <stdlib.h>

void func(char *p)
{
    char str[10] = {"hello"};
    strcpy(p,str);
}

int main()
{
    char p[10] = {0};
    void (*func_p)(char*);
    func_p = func;
    func_p(p);
    printf("main p=%s\n",p);
}

main p=hello

总结:以上就是对指针相关的一些总结,欢迎大家评论。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值