在很多例子中我读过一个简单的getListLength()函数看起来像这样:
int getListLength(struct node *head)
{
struct node *temp = head;
int iCount = 0;
while (temp)
{
++iCount;
temp = temp->next;
}
return iCount;
}
Run Code Online (Sandbox Code Playgroud)
让我感到不必要的是声明一个复制传递参数的本地指针(在本例中为*temp).如果我没记错,传递的参数会获得自己的副本.因此,不需要复制*head的本地指针只是因为*head本身就是一个副本,对吗?换句话说,丢弃*temp指针并在任何地方使用head是正确的吗?
我一直在关注编写汇编的几个例子,他们使用临时寄存器将立即值传递给段寄存器.为什么在将其置于段寄存器之前需要将其置于某个寄存器中?
例:
movw $0x7c00, %ax
movw %ax, %ds
...
...
movw $0x6000, %ax
movw %ax, %ss
Run Code Online (Sandbox Code Playgroud)
为什么不直接把直接放在段寄存器中?
movw $0x7c00, %ds
...
movw $0x6000, %ss
Run Code Online (Sandbox Code Playgroud)