0

我有一个我正在分析的 C 代码,并且有这样的东西:

variable = (unsigned long)rx;

如果rx是一个十六进制数的数组并且变量是unsigned long,那么变量将持有什么?unsigned long格式中的第一个元素?

4

2 回答 2

1

请记住,数组衰减为指针。所以将会发生的事情是强制转换会将指针(即内存地址)转换为 anunsigned long并将其分配给variable.

于 2013-04-03T13:38:09.847 回答
1

由于只要您使用数组的名称,数组就会衰减为指针,并且不尊重它,您将获得一个地址。

因此:

variable = (unsigned long)rx;

将分配rx[]的地址variable作为一个无符号长值。而这:

variable = (unsigned long)*rx;

或这个:

variable = (unsigned long)rx[0];

会给你第一个元素的值rx[](注意语法rx[0]基本上是说取基地址rx+0偏移量,取消引用并返回结果)

于 2013-04-03T13:50:23.803 回答