指针为什么要有类型

有一个问题,那就是既然指针都是4字节(32位),为什么要有不同类型的指针,只有一个不就好了吗?

原因有两个:

1.为了地址增量的方便

看这个例子

#include<iostream> using namespace std; int main(){ double b = 13; double *p_b = &b; int a = 9; int *p_a = &a; cout<<"char pointer: "<<p_b<<" "<<p_b+1<<endl; cout<<"int pointer: "<<p_a<<" "<<p_a+1<<endl; return 0; }

double pointer: 0x22cc20 0x22cc28

int pointer: 0x22cc1c 0x22cc20

输出如上所示,double型的地址增量为8,而int型指针的地址增量为4,虽然一个指针的大小始终是四字节。如果没有指针类型,增量的大小是不是就要用户自己定义了呢?这样就很不方便了,有了类型,编译器就能很方便地帮用户做这件事了(当然用户也很方便了)。

2.为了类型安全

定义指针的类型帮助编译器发现你是否用了错误的类型,这也是C为什么要有类型的最初原因。

扫描二维码关注公众号,回复: 5103782 查看本文章

猜你喜欢

转载自blog.csdn.net/sinat_41852207/article/details/86675554