我被賦予了考試這個代碼,並在需要局部變量來解釋它做什麼: (我改變了一些名字,因爲源不是英語)指針和
#include <stdlib.h>
typedef int typeInfoSCL;
struct elemSCL
{
typeInfoSCL info;
struct elemSCL* next;
};
typedef struct elemSCL TypeElemSCL;
typedef TypeElemSCL* TypeSCL;
void list_add(TypeSCL *scl, typeInfoSCL e)
{
TypeSCL tmp = *scl;
*scl = malloc(sizeof(struct elemSCL));
(*scl)->info = e;
(*scl)->next = tmp;
}
int main()
{
TypeSCL scl1 = NULL;
list_add(&scl1, 3);
list_add(&scl1, 5);
TypeSCL tmp = malloc(sizeof(struct elemSCL));
tmp->next = scl1;
list_add(&tmp, 7);
}
我想,既然tmp
在list_add
一個局部變量,這樣的說法:
(*scl)->next = tmp;
是不正確的,因爲該方法被調用後,scl->next
不再存在。
測試證明我錯了。爲什麼?
此代碼不能編譯,請張貼編譯代碼。你可能沒有正確地改變所有的名字。 –
由於這是某種形式的僞代碼,而不是真正的C,它是不可能回答的問題。特別是,該函數的缺失返回類型使得任何嘗試回答都有所不同。 – Lundin
我想你錯過了一些'*'這裏:'結構elemSCL未來;指針的' – Gerhardh