c语言指针总结

本文详细介绍了指针的基本概念及其多种应用形式,包括指针数组、数组指针、函数指针等,并通过实例解释了如何使用这些指针进行数据操作及函数调用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

指针

指针可以理解为:当你要和一个人说话的时候,你要先找到他的位置,然后你才能和他说话,这个位置就可以理解为指针变量。

int * p = a;

p存的就是a的地址;

指针数组:数组元素为指针类型的数组

int arr [5];//这是一个整数数组

float arr [5];//这是一个浮点型数组

同样int* arr[5];//这是一个每一个元素为int*类型的指针数组,即每一个元素都是一个整形元素的地址,就是指针数组

数组指针:数组指针是指向数组的指针;、

对于一维数组:

int arr[4] = {1, 2, 3, 4};

int (*p)= arr;

对于以上代码,*(p + 0)的值为1, *(p+1)的值为2,*(p + 2)的值为3, *(p+3)的值为4;

因为arr的值等于&arr,即数组的地址等于数组首元素的地址,则p指向的其实是数组第一个元素;

对于二维数组:数组指针指向的是每一行的起始地址;

int arr[4][4] = {11, 12, 13, 14, 
       21, 22, 23, 24, 
       31, 32, 33, 34,
       41, 42, 43, 44};

int (*p)[4] = &arr;

p指向的是第一行第一个元素;

所以*(*(p[0]) + 0))的值为11,*(*(p[0]) + 1))的值为12,*(p[2]) 指向的是第三列第一个元素

以此类推:

对于三维数组数组:指针指向的是每一个二维数组的起始地址

函数指针 :

函数指针:指向函数的指针,每个函数也有地址,用一个指针变量把这个地址取出,这个指针就叫函数指针;

#include<stdio.h>

void fun(int x)
{
	printf("%d", x);
}

int main()
{
	void (*p)(int) = fun;
	p(5);
	return 0;
}
上述代码的结果为5,指针变量p就是指向一个函数的指针变量,在声明一个函数指针变量时,返回类型和参数列表的类型必须和所指向的函数一致

使用函数指针的作用:

实现多态;

回调函数;

函数指针数组 :数组元素为函数指针的数组

void (*p[2])(int) = {fun1, fun2};

p[0](arg);//调用第一个函数;

p[1](arg);//调用第二个函数;

函数指针数组里面的函数返回类型和参数列表必须一致。


指向函数指针数组的指针 :声明一个指针变量指向的是一个函数指针数组,当然这个指针类型必须为函数指针类型;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值