p=(int)malloc(100*sizeof(int));p++;这里p自加1,到底是加了几个字节呢??
展开全部
p一个字节也没加。
因为你的p是int型,malloc返回的内容却是你刚才分配的100个整型空间的头部地址,所以p以int型的身份保存了这个地址的数值,那么p++只是给p的数值加1。
不过如果你将p的内容依然当作地址来看的话,那么增加了1个字节,并不是整数应该有的4个字节(sizeof(int),有些编译器或许不同)。如果你想用指针的话,还是应该p=(int *),而不是int
因为你的p是int型,malloc返回的内容却是你刚才分配的100个整型空间的头部地址,所以p以int型的身份保存了这个地址的数值,那么p++只是给p的数值加1。
不过如果你将p的内容依然当作地址来看的话,那么增加了1个字节,并不是整数应该有的4个字节(sizeof(int),有些编译器或许不同)。如果你想用指针的话,还是应该p=(int *),而不是int
更多追问追答
追问
对,我搞错了,那如果是p=(int*).........那自加是移动了几个字节呢??
追答
4个字节了,准确的说是sizeof(int),不过现代编译器一般都是4字节
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询