[问题] C 语言指针操作的问题

剑寒九州

Moderator
注册
2003-07-20
消息
808
荣誉分数
3
声望点数
0
面试的时候,被问:

int *t;
*t=5000;
t++;

*t = ?
就是整数的地址加1, 结果是什么?

另外,还有个问题是,C 程序从32位操作系统移植到64位, 要注意什么问题。
谢谢。
 
由于t只是个指针,没有赋予一个内存地址(没有分配或者没有指定),所以可能是栈内的一个随机数,可能会segment fault,更糟的是把某些数据改了,却毫无知觉。结果未知。 不太明白此题

从32位到64位要注意int, long型数据,以及地址,因为32位下很多程序用int存储地址,这是个不好的习惯,因为32位下可以用unsigned int指向任何地方,但是64位下就不行了,int还是32位,但long型会变成64位,所以最好用一些类型定义表示地址,升级时只要改变它的定义就行了,然后重新编译。
 
后退
顶部