比如下面一段代码,我们分别定义了3个不同类型的指针,指向相同的地址,然后赋予不同的值。这样一下我们就明了了。
从上面的代码中我们可以看到,不同类型的指针可以代表不同的数据大小。并且应该注意的是指针的分配。使用C语言使用指针的局限性在于,对指针的所有操作都必须是相同类型的指针。就像0x1000只是一个数字一样,在添加类型之前,我们只能知道操作的地址所指向的字节数。这样,可以将指针与地址区分开。另外,应该注意,为了提高效率,C语言对指针提出了起始地址对齐要求。例如,短指针地址需要除以2,长指针地址需要除以4。指针的存在赋予我们内存操作的自由度,但是自由度也增加了危险。例如,如果我们以不同的方式定义指针类型,则在递增或递减时指针地址的偏移量将有所不同。例如,执行增量后,char类型的指针增加1,而short类型和long类型则分别增加2和4。如果我们在编写程序时没有考虑到这一点,很容易引起错误。此外,彼此连续定义的阵列地址不一定是连续的。这些都是可能发生错误的地方。
『本文转载自网络,版权归原作者所有,如有侵权请联系删除』