2018.7.8
1.声明结构体时,结构体内部不能赋值。比如
struct student{
char id=0;
char score=0;
};
这样大错特错!
2.字符数组 char a[10] 。只有在声明的时候可以这样: char a[10]="xxxxx";
若 不是声明时,a="xxx";这样大错特错。a是一个常量指针,不能改变值。
此时可以用strcpy()或循环赋值。
3. 记住 中括号 [] 的降维作用。。。。。额。。无语。
谨记教训。
4.在创建链表结点的时候犯了一个低级错误:
错误代码是这样的:
void creat(p_list p)
{
p=(p_list)malloc(sizeof(list));
p->next = p;
p->pre = p;
p->data = 0;
}
这里的错误是这样的:忽略了变量范围的作用域。
这里的p_list p 很具有迷惑性,声明一个指向p_list型链表结点的指针。把p传进子函数,切记,这是传进子函数的是指针变量,传进子函数后,主函数的变量就已经失去作用了只不过是把主函数中P的值给了子函数中的p但是这时的p是子函数中的变量,其作用域只限于子函数区域。要更改错误有以下两种方法:
1,调用函数时传递p指针的地址。
2,将函数改为如下形式:
p_list creat()
{
p_list p;
p=(p_list)malloc(sizeof(list));
p->next=p;p->pre = p;p->data=0;
return p;
}