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

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

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

前言

数组指针和指针数组这两个在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("%d\n", pf[i](4, 2));
	}
	return 0;
}

总结

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

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/langs/1323921.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-06-12
下一篇2022-06-12

发表评论

登录后才能评论

评论列表(0条)