【C语言】指针小总结
2017-04-12 00:16
176 查看
无论是程序员还是计算机都无法通过值的位模式来判断它的类型,类型是通过值的使用方法隐式的确定的。
声明一个指针变量不会自动分配任何内存
在对指针执行间接访问前,指针必须进行初始化或者使它指向现有的内存,或者给它分配动态内存。
除了NULL指针之外,再也没有任何内建的记法来表示指针常量。
偶尔需要使用指针常量,这时我们可以通过把一个整型值强制转换为指针类型(int*)来创建它。
如果一个指针减去一个整数后,运算结果产生的指针所指向的位置在数组第一个元素之前.那么它也是非法的。加法运算稍有不同,如果结果指针指向数组最后一个元素后面的那个内存位置仍是合法(但不能对这个指针执行间接访问操作),不过再往后就不合法了。
如果两个指针都指向同一个数组中的元素,那么它们之间可以相减。指针减法的结果经过调整(除以数组元素类型的长度〕,表示两个指针在数组中相隔多少个元素。如果两个指针并不是指向同一个数组的元素,那么它们之间进行相减就是错误的。
任何指针之间都可以进行比较,测试它们相等或不相等。如果两个指针都指向同一个数组中的元素,那么它们之间还可以执行<、<=、>和>=等关系运算,用于判断它们在数组中的相对位置。对两个不相关的指针执行关系运算,其结果是未定义的。
声明一个指针变量不会自动分配任何内存
在对指针执行间接访问前,指针必须进行初始化或者使它指向现有的内存,或者给它分配动态内存。
除了NULL指针之外,再也没有任何内建的记法来表示指针常量。
偶尔需要使用指针常量,这时我们可以通过把一个整型值强制转换为指针类型(int*)来创建它。
如果一个指针减去一个整数后,运算结果产生的指针所指向的位置在数组第一个元素之前.那么它也是非法的。加法运算稍有不同,如果结果指针指向数组最后一个元素后面的那个内存位置仍是合法(但不能对这个指针执行间接访问操作),不过再往后就不合法了。
如果两个指针都指向同一个数组中的元素,那么它们之间可以相减。指针减法的结果经过调整(除以数组元素类型的长度〕,表示两个指针在数组中相隔多少个元素。如果两个指针并不是指向同一个数组的元素,那么它们之间进行相减就是错误的。
任何指针之间都可以进行比较,测试它们相等或不相等。如果两个指针都指向同一个数组中的元素,那么它们之间还可以执行<、<=、>和>=等关系运算,用于判断它们在数组中的相对位置。对两个不相关的指针执行关系运算,其结果是未定义的。
相关文章推荐