
前言提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
数组指针和指针数组这两个在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;
}
总结
以上就是数组指针、指针数组和函数指针数组的使用方法了,大家多多练习,可以配合我其他的博客巩固知识点。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)