C指针

本文详细介绍了C语言中的指针概念,包括指针的类型、用途以及如何使用指针指向不同数据类型如整数、数组和函数。通过实例解释了指针本身类型的概念及其在C语言中的应用。

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

 指针。
它的本质是地址的类型。在许多语言中根本就没有这个概念。但是它却正是C灵活,高效,在面向过程的时代所向披靡的原因所在。因为C的内存模型基本上对应了现在von Neumann(冯·诺伊曼)计算机的机器模型,很好的达到了对机器的映射。不过有些人似乎永远也不能理解指针【注1】。
1Joel Spolsky就是这样认为的,他认为对指针的理解是一种aptitude,不是通过训练就可以达到的

指针可以指向值、数组、函数,当然它也可以作为值使用。
看下面的几个例子:
int* p;//p
是一个指针,指向一个整数
int** p;//p
是一个指针,它指向第二个指针,然后指向一个整数
int (*pa)[3];//pa
是一个指针,指向一个拥有3个整数的数组
int (*pf)();//pf
是一个指向函数的指针,这个函数返回一个整数
后面第四节我会详细讲解标识符(identifier)类型的识别。
1.
指针本身的类型是什么?
先看下面的例子:int a;//a的类型是什么?
对,把a去掉就可以了。因此上面的4个声明语句中的指针本身的类型为:
int* 
int**
int (*)[3]
int (*)()
它们都是复合类型,也就是类型与类型结合而成的类型。意义分别如下:
point to int
(指向一个整数的指针)
pointer to pointer to int
(指向一个指向整数的指针的指针)
pointer to array of 3 ints
(指向一个拥有三个整数的数组的指针)
pointer to function of parameter is void and return value is int 
(指向一个函数的指针,这个函数参数为空,返回值为整数)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值