linux c 出错集

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;

}

原文地址:https://www.cnblogs.com/jiaan/p/9279282.html