指针篇之二 刘先生您贵姓

    指针之所以比普通变量复杂,主要在于它多了一个指向,或者说指针所包含的内容是买一送一的,明处的是指针本身这个变量,而暗地里隐含的是指针所指向的内存。如果忽略了后者,一些似是而非的说法就会让指针的概念模糊不清。

    变量都有类型,于是很多人也会问:这个指针是什么类型,这个问题看似普通,大家也都习以为常,但它相当于在问“刘先生,您贵姓?”。指针变量的类型就是指针型,如同int就是整型一样,只是指针变量通过所保存的地址值指向另一段关联内存,而通常所说的指针类型实际是指这块关联内存的类型。

    所以完整正确的说法应该是这个指针指向的内存定义为什么类型?,比如该指针“指向的内存为整型”“指向的内存为浮点型”“指向的内存解析为某函数”等,这样表述太冗长,于是就有了现在整型指针”“浮点型指针”“函数指针等简化说法。不过这种简化对于初学者可能造成严重误导:它掩盖了指针中隐含的那段被指向的内存。比如,整形指针” int *pA;这个定义实际包含两层含义:

    1) 定义了一个名为pA的变量,是指针型

    2) 这个指针变量指向的内存单元类型为整型

    指针指向的内存的类型()称为指针类型,是导致C指针难以理解的一个重要原因,因为这种说法掩盖和混淆了指针与其指向内存的双生关系。

    再次强调,所有指针变量保存的都是一个地址值,指向另外一段内存,而我们关心的是这段被指向内存的类型。还绕不清楚?看看英文的表达:The type of a pointer actually means the type of the memory unit which is pointed by this pointer

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值