指针的进阶

73 阅读4分钟

我报名参加金石计划1期挑战一一瓜分10万奖池,这是我的第六篇文章。

前言

一、指针

1、指针

2、字符指针

3、指针数组

4、数组指针

5、&数组名VS数组名

二、数组指针的使用

6、数组指针的使用

7、一个数组指针的使用

8、数组参数 指针参数

9、函数指针使用

总结

前言

指针的进阶

1.字符指针

2.数组指针

  1. 指针数组

  2. 数组传参和指针传参

  3. 函数指针

6.函数指针数组

7.指向函数指针数组的指针

8.回调函数

  1. 指针和数组面试题的解析

提示:以下是本篇文章正文内容,下面案例可供参考

一、指针

1、指针

指针的主题,我们在初级阶段的《指针》章节已经接触过了,我们知道了指针的概念:

1.指针就是个变量,用来存放地址,地址唯一标识一块内存空间。

2.指针的大小是固定的4/8个字节(32位平台/64位平台)

3.指针是有类型,指针的类型决定了指针的±整数的步长,指针解引1用操作的时候的权限。

  1. 指针的运算。

这个章节,我们继续探讨指针的高级主题。

代码示例;

2、字符指针 在指针的类型中我们知道有一种指针类型为字符指针 char*

一般使用;

3、指针数组 在《指针》章节我们也学了指针数组,指针数组是一个存放指针的数组。

这里我们再复习一下,下面指针数组是什么意思?

int* arr1[10];//整形指针的数组

char*arr2[4];1/一级字符指针的数组

char **arr3[5];//二级字符指针的数组

4、数组指针 数组指针的定义

数组指针是指针?还是数组?

答案是:指针。

我们已经熟悉:整形指针:int * pint;能够指向整形数据的指针。浮点型指针:float * pf:能够指向浮点型数据的指针。

那数组指针应该是:能够指向数组的指针。

下面代码哪个是数组指针?

int *p1[10] ; int (*p2) [10]: //p1, p2分别是什么?

5、&数组名VS数组名 对于下面的数组

int arr[10]: arr和Qarr 分别是什么呢?

我们知道arr是数组名,数组名表示数组首元素的地址。那&arr数组名到底是什么呢?

二、数组指针的使用 6、数组指针的使用 那数组指针是怎么使用的呢?

既然数组指针指向的是数组,那数组指针中存放的应该是数组的地址。

7、一个数组指针的使用

学了指针数组和数组指针我们来一起回顾并看看下面代码的意思:

int arr[5l: int *parr1[10] ; int (*parr2) [10] ; int (*parr3 [101) [5]:

8、数组参数 指针参数 在写代码的时候难免要把【数组】或者【指针】传给西数,那西数的参数该如何设计呢?

一维数组传参

一维指针传参

思考:

当一个函数的参数部分为一级指针的时候,函数能接收什么参数?

二维指针传参

9、函数指针使用

数组指针与函数指针的区别;

输出的是两个地址,这两个地址是test 函数的地址。那我们的函数的地址要想保存起来,怎么保存?

下面我们看代码:

void test() { printf(“hehe\n”); } // 下面pfun1 和pfun2哪个有能力存放test函数的地址?

void (*pfun1) (); void *pfun2();

首先,能给存储地址,就要求pfun1或者pfun2是指针,那哪个是指针?答案是:

pliun1可以存放。pfun1先和*结合,说明pfun1是指针,指针指向的是一个西数,指向的函数无参数,返回值类型为void.

总结 这里对文章进行总结: 以上就是今天要讲的内容,本文仅仅简单介绍了指针进阶的使用,而指针提供了大量能使我们快速便捷地处理数据的指针的进阶。