对指针的一些总结
计算机内存中的每个位置都由一个地址标识。通常,邻近的内存位置合成一组,这样就允许存储更大范围的值。指针就是他的值表示内存地址的变量。
无论是程序员还是计算机都无法通过值的位模式来判断它的类型。类型是通过值的使用方法隐式地确定的。编译器能够保证值的声明和值的使用之间的关系是适当的,从而帮助我们确定值的类型。
指针变量的值并非它所指向的内存位置所存储的值。我们必须使用间接访问来获得它所指向位置存储的值。对一个"指向整型的指针"施加间接访问操作的结果将是一个整型值。
声明一个指针变量并不会自动分配任何内存。对未初始化的指针变量执行间接访问操作是非法的,而且这种错误常常难以检测。其结果常常是一个不相关的值被修改。这种错误是很难被调试发现的。
NULL指针就是不指向任何东西的指针。它可以赋值给一个指针,用于表示那个指针并不指向任何值。对NULL指针执行间接访问操作的后果因编译器而异,两个常见的后果分别是返回内存位置零的值以及终止程序。
和任何其他变量一样,指针变量也可以作为左值使用。对指针执行间接访问操作所产生的值也是个左值,因为这种表达式标识了一个特定的内存位置。
除了NULL指针之外,再也没有任何内建的记法来表示指针常量,因为程序员通常无法预测编译器会把变量放在内存中的什么位置。在极少见的情况下,我们偶尔需要使用指针常量,这时我们可以通过减去一个整型值。在这两种情况下,这个整型值会进行调整,原值江乘以指针目标类型的长度。这样,对一个指针加1将使它指向下一个变量,至于该变量在内存中占几个字节的大小则于此无关。
然而,指针运算只有作用于数组中其结果才是可以预测的。对任何并非指向数组元素的指针执行算术运算是非法的(但常常很难被检测到)。如果一个指针减去一个整数后,运算结果产生的指针所指向的位置在数组第一个元素之前,那么它也是非法的。假发运算稍有不同,如果结果指针指向数组最后一个元素后面的那个内存位置仍是合法(但不能对这个指针指向间接访问操作),不过再往后就不合法了。
如果两个指针都指向同一个数组中的元素,那么它们之间可以相减。指针减法的结果经过调整(除以数组元素类型的长度),表示两个指针在数组中相隔多少个元素。如果两个指针并不是指向同一个数组的元素,那么它们之间进行相减就是错误的。
任何指针之间都可以进行比较,测试它们相等或不相等。如果两个指针都指向同一个数组中的元素,那么它们之间还可以执行<、<=、>和>=等关系运算,用于判断它们在数组中的相对位置。对两个不相关的指针执行关系运算,其结果是未定义的。
如果本文对您有用,请留言告知。。。
分享到:
相关推荐
C语言指针总结。对于学习C语言中的指针可起到一定的辅助作用。
最全面的C语言指针总结 C高级C语言指针总结
指针是C语言中的难点,也是C语言中的精华所在,本文档列举了指针使用中的常见注意事项及易混淆知识点的对比,为C语言的初学者掌握指针提供了清晰的思路。
这里面对指针做了详细的分析,搞定这个分析,你绝对搞定指针,掌握c语言!
C语言指针知识点总结.pdf
本文档是适合于基础学习C语言指针到深入学习的c语言指针的总结性文档,本人能力有限,如错误之处,请告知我。
此文档系统详细的讲解了指针功能及用法,强力推荐
C指针
C语言 指针 在函数中的使用,指针变量,指针数组,指针和函数的关系,指针可以作为函数的参数,传数组的地址,传指针数组的地址
C语言指针数组函数笔记,自己总结的,希望有帮助
C指针的总结,经典教程,欢迎下载,望大家好好分享。
有关指针的一道上机实验题,有源程序,可以详细了解指针的概念及相关应用
全面而深入浅出的解析了c语言中指针的活学活用
《C语言指针经验总结》
C语言指针经典总结,考试编程的利器,总结的还是非常不错的。
C语言用途指针总结.pdf
c语言指针相关整理总结