【C】理解指针数组、数组指针、函数指针、函数指针数组、指向函数指针数组的指针

1. 指针数组

是数组,存放指针的数组。

下面的是三个指针数组的形式:

int* arr1[10];
char* arr2[20];
char* arr3[10];


2. 数组指针

是指针,有能力指向一个数组的的指针。

定义(简单的数组指针):

int (*p)[10];
//p 先和 * 结合,说明 p 是一个指针变量,然后指向的是一个大小为 10 个整型的数组,所以 p 是一个指针,指向一个数组,叫数组指针。
//[] 的优先级高于 * 号,所以必须加上()来保证 p 先和 * 结合。


下面我们给出几个例子:


int arr[10] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 0 };
int (*parr)[10] = &arr;
*(parr[0] + 1);   //*(*(parr+0)+1)


#define _CRT_SECURE_NO_WARNINGS 1  
#include<stdio.h>  
int main()
{
	
	int arr[3][5] = { 1, 2, 3, 4, 5, 6, 7, 8, 9 };
	int(*p)[5] = arr;
	int i = 0;
	int j = 0;
	for (i = 0; i < 3; i++)
	{
		for (j = 0; j < 5; j++)
		{
			printf("%d\n", *(*(p + i) + j)); //printf("%d\n",p[i][j]);
		}
	}
	system("pause");
	return 0;
}



int (*parr3[10])[5];  //*parr3[10]表示数组有10个元素,每个元素是指针,该指针能指向大小为5个整型的数组


3.函数指针

指向函数的指针,存放函数的地址。

下面我们给出例子:

#define _CRT_SECURE_NO_WARNINGS 1  
#include<stdio.h>  
#include <stdio.h>
 
 int Add(int a, int b)
 {
 	return a+b;
 }
 
 int main()
 {
 	int (*pfun)(int , int) = Add;
 	printf("%d\n", pfun(1, 2));
	system("pause");
	return 0;
 }


4.函数指针数组

每个元素都是指向函数指针的数组。


int(*pfun[5])(int, int) = { NULL, Add, Sub, Mul, Div };




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

int(*(*p)[5])(int, int);  //p为指向函数指针数组的指针


 




  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值