我在调试AVR微控制器时遇到了这个问题:我有一个带有大量变量定义的main.c文件,其中有一个结构数组,如下所示:
struct mystruct mystruct_array[COUNT];
Run Code Online (Sandbox Code Playgroud)
在另一个.c文件中,我将此数组称为外部,但是我放弃了数组括号和大小,所以我不会重复自己,只是将变量声明为指针(因为数组本质上是指针,不是吗?) :
extern struct mystruct *mystruct_array;
Run Code Online (Sandbox Code Playgroud)
但是,当我检查使用数组的地址printf("%p\n", mystruct_array);我得到了一个空指针,而不是在存储阵列的位置.另外,如果我将访问后续项目数组中,喜欢printf("%p\n", &(mystruct_array[n]));将打印地址0加n倍sizeof(struct mystruct).
只有在我将定义更改为
extern struct mystruct mystruct_array[COUNT];
Run Code Online (Sandbox Code Playgroud)
(与main.c完全相同),我得到了数组的真实地址.
我的问题:为什么这会对编译器产生影响(在我的例子中是avr-gcc)?
我正在将字符串中的制表符分隔值读入这样的对象:
class Node(rect):
def __init__(self, line):
(self.id, self.x1, self.y1, self.x2, self.y2) = line.split('\t')
Run Code Online (Sandbox Code Playgroud)
这工作正常,但是我想将那些从字符串中读取的x和y坐标转换line为浮点数.什么是最pythonic的方式来做到这一点?我想象的东西
(self.id, float(self.x1), float(self.y1), float(self.x2), float(self.y2)) = line.split('\t')
Run Code Online (Sandbox Code Playgroud)
这当然不起作用.是否有一种优雅的方式来做到这一点,或者我必须手动转换后self.x1 = float(self.x1)呢?