C语言中指针强制转换赋值

2024-11-29 18:26:00
推荐回答(1个)
回答1:

你这样理解是有问题的,你应该知道&的优先级是高于类型转换的,所以是先取指针,然后再强制转换为你需要的类型。例如第一句,Rcs9000_ram_port_flag必然是在前面定义为RCS9000_PORT_FLAG*类型,但后面的&g_Prot_flag[port_no]肯定在前面定义的并不是此类型,安全起见应该先将此指针转换为RCS9000_PORT_FLAG*类型然后再赋值。假如&g_Prot_flag[port_no]为char类型,那么指针加1的时候则移动一个字节(即指向下一个8位数据),假如RCS9000_PORT_FLAG*类型为int类型(假设是32位系统,即int为32位),则强制转换后按32位移动指针。