怎么区分指针所指向的内存的大小
c++中int*p0的指针指向一块32比特的内存的首地址,double*p1指向的是64位的内存的首地址,我们可以输出cout<<*p0<<p1<<endl,我们知道,指...
c++中 int* p0的指针指向一块32比特的内存的首地址,double* p1指向的是64位的内存的首地址,我们可以输出 cout<<*p0<<p1<<endl,我们知道,指针指向的是内存的地址,系统怎么知道指向地址的长度,也就是说p0指向的32位,p1是64位??
展开
3个回答
展开全部
追问
很谢谢你,我一直很好奇,在编译环节肯定会存在区别不同指针类型的指向内存大小的量,不然仅从指针变量本身来区别其指向内存大小似乎是不可能的,但是我一直没找到这样的方法,你的回答解释了我的问题。再次感谢。
展开全部
C++ 知道长度的办法很简单的,这便是为什么指针需要指针具体类型的原因了。
既然是int*,那么指向的类型当然是int,所以长度必然就是int的大小。
C++是静态类型语言,所有变量的类型都需要在编译期间指明的,类型确定了,大小也就确定了。
既然是int*,那么指向的类型当然是int,所以长度必然就是int的大小。
C++是静态类型语言,所有变量的类型都需要在编译期间指明的,类型确定了,大小也就确定了。
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
系统并不知道,是编译器知道
int* 和 double* 类型不同,编译器编译时检查类型并做相应的处理生成不同的机器码指令了
int* 和 double* 类型不同,编译器编译时检查类型并做相应的处理生成不同的机器码指令了
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询