栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

【C 语言教学/多图/多例子/好懂】数组指针、指针数组和函数数组详解

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

【C 语言教学/多图/多例子/好懂】数组指针、指针数组和函数数组详解

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

前言

数组指针和指针数组这两个在C语言中非常重要的概念,由于他们定义的相似性,导致他们非常容易被搞混。这篇博客将会带大家从定义入手,逐步搞懂这两个东西。每天坚持努力的学习非常重要。学习的方式和方法有很多,通过博客网站针对性的进行学习是非常高效的方式。

一、数组指针和指针数组的定义

数组指针:指向数组的指针,是一个指针

int (*arr1)[5];//数组指针

 上面这是一个数组指针,*先于arr1结合,确定了这是一个指针,这个指针所指向的是有五个元素的数组。

---------------------------------------------------------------------------------------------------------------------------------

指针数组:由多个指针组成的数组,是一个数组

int * arr2[5];//指针数组

 上面的这是一个指针数组,【5】的优先级高,所以arr2先于【5】结合,确定了这是一个数组,这个数组存放了5个元素,每个元素是int *也就是整形指针。

---------------------------------------------------------------------------------------------------------------------------------

进阶例子:

如何定义一个存放数组指针的数组?

int (* arr3[10])[5];// arr3是一个存放数组指针的数组

arr3首先和【10】结合确定了 他是一个数组,存放是个元素。每个元素为int(*)[5],即每个元素为数组指针。

二、数组指针和指针数组的使用例子

1.建立初始环境
#include 

int main(){
    //主代码部分
    return 0;
}
2.数组指针的使用

数组指针一般用在二维数组的传参上面,先来看一般的写法

#include 

void printarr_1(int arr[2][3],int row,int col){
    for(int i=0;i 

我们直接在printarr_1的形参部分定义一个二维数组去接受我们的二维数组,这是一个比较常见的做法。

我们再看如何用数组指针实现:

#include 

void printarr_2(int (*arr)[3],int row,int col){
    for(int i=0;i 

这里我们在形参部分定义了一个数组指针去接受我们第一行的地址,同样也能达到效果。这是为什么呢?因为我们在使用arr的时候进行传参,相当于是使用了arr首元素的地址进传参。我们使用一个相对应长度数组指针进行接收,就完全没有问题。

3.指针数组的使用

定义指针数组

int *arr1[10];//一级整形指针的数组
int **arr2[10];//二级整形指针的数组
char **arr2[10];//二级字符指针的数组

函数指针数组(函数指针数组是指针数组非常重要的用法) 

#include 

int Add(int x, int y) {
	return x + y;
}

int Div(int x, int y) {
	return x / y;
}

int Sub(int x, int y) {
	return x - y;
}

int Mul(int x, int y) {
	return x * y;
}

int main() {
	int (*pf[4])(int, int) = { Add,Div,Sub,Mul };//定义一个函数指针数组去使用所有函数
	for (int i = 0; i < 4; i++) {
		printf("%dn", pf[i](4, 2));
	}
	return 0;
}

总结

以上就是数组指针、指针数组和函数指针数组的使用方法了,大家多多练习,可以配合我其他的博客巩固知识点。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/949935.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号