c语言的指针

           2019/3/10
                         许多初学c*语言指针的人刚开始会理不清思路,即使有教材书在比上也会一头雾水,我也是刚入门,给一下我的想法。
                         指针,简单来说就是一个存放地址的变量。你可一联想门牌号和房子的关系。
              c语言的指针,主要两种运算符
              *&
              * 可以简单理解为取值,而&可以理解为取址。
              例如 char *cp=&ch;    //cp存放的ch的地址。
              而 char **cp=&cp;      //这种就是指向指针的指针,间接访问
           
              **即使这样我感觉我也没有把我的理解,写出来。这可能需要自己在加强下理解。
              多看几遍,慢慢来。


               2020/11/13
              
              写的原因很简单:因为最近再学数据结构,我是用c语言写的所以,没有用C++方便。 在看了王道21年的数据结构的书前面几章的时候,
              我用指针去实现书上的代码。遇到了几个坑,希望可以分享下,给大家探探路。
              1.  指针不能直接用scanf赋值,一定要先让指针指向某个变量,再用赋值语句
              比如这个:
                       int a,*t=&a;
                       scanf("%d",t);   //这个就等价 scanf("%d",&a);
                       如果提前不指向,那么t就是一个野指针,不知道指向哪里.
                2. 当看到书上的代买例如 bool  Init_SqList(LNode &L)  这种是C++类型的时候
                我们也可以把它用C语言的指针来实现。

                typedef  struct SqList *LinkList;  //把LinkList通过typedef定义成指向SqList 结构体的指针 
                bool Init_SqList(LinkList L)      //这里是把L的地址传递进来,所以和上面用C++实现的形式相同
                
                2020/11/15
                今天要讲的是,指针非法访问(野指针),导致的问题
                起因是我今天在写一个关于队列基本操作的题目,中间用了挺多的指针。然后后面用 release版本和debug 版本编译都没有警告和出错,但只有release 版可以差不多正常运行,(除了中间有个输入exit退出,做不到,它会卡在哪里然后退出外)。debug 版直接运行结束,刚开始我用的是Cfree5 编译的,没有返回0之类的信息,所以我又用devc++,编译了一边,也是没有任何的警告和错误,但是它返回了一个 return value 3221225477
                 我立马反应过来不对劲因为,一般来说 他正常应该返回0才对。所以我去百度了一下,发现有可能是非法访问,也就是指针瞎指了。然后我返回去查了一边发下果然有个地方不对劲,上代码

指针(重置版)

在我没有动态分配内存的时候,后面即使没有动态分配,没有free()函数实际运行也是错的。

相关文章:

  • 2022-12-23
  • 2021-09-02
  • 2022-03-02
  • 2022-12-23
  • 2022-12-23
  • 2021-10-11
  • 2022-12-23
  • 2022-12-23
猜你喜欢
  • 2022-02-28
  • 2021-09-18
  • 2021-10-21
  • 2021-08-10
  • 2021-05-28
相关资源
相似解决方案