动手写6.2.3
动手写6.2.3中有许多指针创建的例子。我们可以看到,指针的声明就是在变量类型名和变量名之间加上星号(*),并可以任意选择让星号紧贴类型名(第十行第一个变量)或者变量名(第七、八、九行)的代码风格。然而,紧贴类型名的代码风格会给人造成“int*”是一个整体的错觉,初学者很容易在声明多个指针的时候遗漏后面变量名前的星号,就像intPtr4一样,感觉像是定义了一个指针,其实只是一个整型。正确的语法应该像intPtr2那样在前面加一个星号,不管与星号之间有没有空格。
此外,示例中只有第一行的floatPtr初始化了,但在实际编程中我们一定要初始化所有的指针,就跟变量一样。floatPtr的初始值NULL是一个宏定义,它的实际数值是0,也就是地址0x00000000。一般我们都会把指针初始化为NULL,也叫作空指针,这给我们提供了一个统一可管理的异常值。在程序中,我们只要检查指针是否为空就知道指针是否指向有效数据了。(www.xing528.com)
提示
如果指针没有初始化,它可能指向一个未知的地址,那么我们在尝试读取数据的时候就可能造成程序崩溃。此外,在指针初始化的时候,不能使用0以外的整型给指针赋值。
除了上面例子中的那些指针类型外,C++还有一种通用的void*指针。我们知道指针就是地址,指针的类型只不过表示了地址指向的位置所存放的数据类型。如果我们将int*指针转换为float*指针,那么程序也只是将数据重新解读为浮点类型。所以这里void*只是代表了一个地址,而我们不知道它所指向的数据类型,但我们也可以重新定义它所指向的数据类型。void*一般会在一些内存处理的系统函数中使用。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。