指针问题 急~

来源:百度知道 编辑:UC知道 时间:2024/06/30 09:07:09
假如我定义了一个结构或者类的指针*p指向一个结构或类,那么在内存模型中,当我使用*p所指向的结构的时候编译器怎么知道这个结构结尾在哪呢?
比如在c里string是以\0结尾的,所以我们能知道它的结尾,那结构和类的结尾我们怎么知道呢?
不知道说清了没.

编译器提前把*p所指对象的大小num算出来了,当分配内存或者引用*p时就从指针基地址开始,向后移动num个存储单位就ok了,当然结构的结尾也就知道了。
顺便说一下,之所以结构体内不能嵌套递归本身的数据类型,就是因为那样的话编译器无法计算出结构体的大小num,从而无法确定指针结尾等

难道不是分号(;)吗?

p=p+sizefo(class/struct)

结构体的确是以分号结束的,但我想他问的肯定不是这个
string是以\0结尾的吗?不是吧,你说的应该是C串吧 char str[]="aaaa",这种吧,这个用\0做结尾的原因估计能猜出来,因为不可能把没有赋值的空间单元也输出
当你定义一个结构体,他所占的空间也就确定下来了,我觉得没必要用什么符号结尾。嘿嘿,初学者,莫见笑,要是你知道答案,可以Hi我,期盼着和你一起进步!