C语言_指针(1)

文章目录


前言

指针数组是由指针组成的数组。它的每个元素都是一个指针,可以指向任何数据类型。在C语言中,我们可以定义一个指针数组如下:

c 复制代码
int *arr[10]; // 声明一个大小为10的指针数组,每个元素都是一个int类型的指针

这个数组中的每个元素都是一个int类型的指针。我们可以使用下标来访问数组中的元素,并对指针进行赋值操作。

指针数组的应用场景比较广泛,例如:

  • 可以用来存储多个字符串,每个指针指向一个字符串;
  • 可以用来实现多态性,将不同类型的指针存储在同一个指针数组中;
  • 可以用来实现动态的内存分配,将指针存储在指针数组中,然后根据需要动态分配内存。

需要注意的是,在使用指针数组时一定要注意指针指向的内存是否有效,避免出现指针悬挂等问题。


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

一、指针数组

指针数组是指包含指针元素的数组。每个数组元素都是一个指针,可以指向另一个数据类型的内存地址。指针数组常用于存储和处理多个地址信息。

在C语言中,可以定义一个指针数组来存储多个指针。例如,以下代码定义了一个包含三个整型指针的指针数组:

c 复制代码
int *ptr_array[3];

这个数组可以存储三个指向整型变量的指针。可以通过赋值来初始化这些指针:

c 复制代码
int a = 10;
int b = 20;
int c = 30;
ptr_array[0] = &a;
ptr_array[1] = &b;
ptr_array[2] = &c;

这样,ptr_array 数组就包含了三个指向整型变量的指针。可以通过下标访问这些指针,

例如 *ptr_array0 访问变量 a 的值。

除了整型指针,还可以定义其他类型的指针数组,例如字符指针数组、浮点型指针数组等。指针数组在编程中有很多应用,例如字符串数组、函数指针数组等。

c 复制代码
int* arr1[10]; //整形指针的数组
char* arr2[4]; // 字符指针的数组
char** arr3[5]; // 二级字符指针的数组

1.1利用指针数组模拟出二维数组


二、数组指针

数组指针是指针?还是数组?
答案是:指针。
我们已经熟悉:
整形指针:intpint;能够指向整形数据的指针。
浮点型指针:float
pf;能够指向浮点型数据的指针。
那数组指针应该是:能够指向数组的指针。

2.1数组名是数组首元素的地址

有两个例外:

1. sizeof (数组名),这里的数组名不是数组首元素的地址,数组名表示整个数组,sizeof(数组名)计算的是整个数组的大小 , 单位是字节。

2. &数组名,这里的数组名表示整个数组,&数组名取出的是整个数组的地址,除此之外所有的地方的数组名都是数组首元素的地址。

数组指针 一般在二维数组上方便
3. 一维数组传参,形参的部分可以是数组,也可以是指针。
4. 二维数组传参,形参的部分可以是数组,也可以是指针。

2.2 二维数组传参

2.3 一级指针传参

2.4 二级指针传参

思考:当我们的形参部分是二级指针,那可以接收什么样的参数

三. 函数指针

函数指针 - 指向函数的指针

  1. 函数:
    函数名是函数的地址
    & 函数名 还是函数的地址

  2. 数组:
    数组名是数组首元素的地址
    & 数组名是整个数组的地址

首先,能存储地址,就要求pfun1 或者 pfun2 是指针,那哪个是指针??
pfun1 可以存放,pfun1先和 * 结合,说明pfun1 是指针, 指针指向的是一个函数,指向的函数无参数,返回值类型 void 。

四 . typedef 重命名

相关推荐
kkeeper~11 小时前
0基础C语言积跬步之数据在内存中的存储
c语言·数据结构·算法
2401_8685347812 小时前
论企业网络设计
数据结构
wabs66613 小时前
关于贪心算法的一些自我总结【力扣45.跳跃游戏II】【灵感来源:代码随想录】
算法·贪心算法·复盘
2401_8769641313 小时前
【湖北专升本】2026湖北专升本真题PDF+备考资料汇总
数据结构·人工智能·经验分享·深度学习·算法·计算机视觉
qq38624619613 小时前
更新补发第6天:7天学会C语言,每天5分钟,不需要基础
c语言·for循环·循环语句·while循环·do-while循环
嗝o゚13 小时前
CANN GE 算子融合——融合算法与调度策略
算法·昇腾·cann·ge
小江的记录本14 小时前
【JVM虚拟机】垃圾回收GC:垃圾回收算法:标记-清除、标记-复制、标记-整理、分代收集(附《思维导图》+《面试高频考点清单》)
java·jvm·后端·python·算法·安全·面试
Ulyanov15 小时前
用声明式语法重新定义Python桌面UI:QML+PySide6现代开发入门(一)
开发语言·python·算法·ui·系统仿真·雷达电子对抗仿真
数据科学小丫15 小时前
特征工程处理
人工智能·算法·机器学习
z落落16 小时前
C#参数区别
java·算法·c#