C – 浅析链表中的点点滴滴 《C语言篇》

最近大家都在学习数据结构,其中链表部分是目前出问题最多的地方,这里就我最近收到的问题进行简单的整理,有出错的地方欢迎指出

本文讨论一下几个问题:
1. 结构体怎么声明和定义变量?
2. struct Node p 和 struct Node *pp 什么区别?
3. typedef 到底定义了什么?
4. 我该如何将一个结构体变量传入自定义的方法并且对其进行操作?

继续阅读C – 浅析链表中的点点滴滴 《C语言篇》

C-对野指针的理解

C做作业时无意写了以下代码


char *p;
gets(p);
//输入 helloworld
printf("%s",p);
gcc 编译正常,后来多多同学贴到 vc 发现有问题。

查资料知,这里涉及到了野指针的问题
char *p;  //野指针,无内存空间,不能存放数据!

成因:
(1)指针变量没有被初始化。任何指针变量刚被创建时不会自动成为NULL指针,它的缺省值是随机的,它会乱指一气。所以,指针变量在创建的同时应当被初始化,要么将指针设置为NULL,要么让它指向合法的内存
注意:

NULL是系统定义的常量,没有类型限定的0值。一般用来初始化一个指针变量,以标识指针未指向任何地址,或者说空指针,

(2)指针p被free或者delete之后,没有置为NULL,让人误以为p是个合法的指针

(3)指针操作超越了变量的作用范围