C语言高级操作(一)——指针数组 && 数组指针 && 常量指针 && 指针常量 && 函数指针 && 指针函数问题

一、指针常量与常量指针

1、指针常量

  本质上是一个常量,常量的类型是指针,表示该常量是一个指针类型的常量。在指针常量中,指针本身的值是一个常量,不可以改变,始终指向同一个地址。在定义的时候,必须要初始化。

int a = 10, b = 20;
int *const p = &a;
*p = 30;				

p指针指向的地址是不变的,但是其内容可被修改。

2、常量指针

  常量指针本质上是一个指针,常量表示指针指向的内容,说明该指针指向一个“常量”。在常量指针中,指针指向的内容是不可改变的,指针看起来好像是指向了一个常量。

int a = 10, b = 20;
const int *p = &a;
p = &b;			

指针可指向其他地址,但是指向的内容不可以改变。

二、指针数组与数组指针

1、数组指针

  首先本质上是一个指针;指针指向数组;
定义方式:
存储类型(可省) + 数据类型(*指针名)[下标] = 值;
如 int (*p)[3];
存储类型:auto、static、extern
在这里插入图片描述

2、指针数组

  首先是个数组;
定义方式:[存储类型] + [数据类型] * 数组名[长度];
如:

int *arr[3];

指针数组的含义是:数组中每个元素都是指针。

三、函数指针和指针函数

1、指针函数

定义方式:返回值 * 函数名(形参)
如 int *fun(int);

2、函数指针

 本质是一个指针,只不过指针指向函数
类型:(*指针名) [形参名]
如 int (*p)(int);
表示一个指针指向函数

int add(int a, int b)
{
	return (a+b);
}
int main()
{
	int (*p)(int, int);
	p = add;
	ret = p(1, 2);
	printf("%d\n", ret);			// ret = 1+2 = 3;
}
  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

风栖柳白杨

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值