当前位置:  技术问答>linux和unix

关于指针变量,struct 变量,指针使用的一些疑惑,望高手指教

    来源: 互联网  发布时间:2015-12-16

    本文导语:  #include                                                                                int main(){         struct list_head{                 struct list_head *prev,*next;   ...

#include                                                                                int main(){
        struct list_head{
                struct list_head *prev,*next;
        };

        struct list_head example_list_struct; 
        struct list_head *example_list_pointer;
        example_list_struct.prev=NULL;
        example_list_pointer->prev=NULL;
        //printf("")
        return 0;
}
example_list_struct.prev=NULL 为什么运行到这一句程序不会dump掉?定义一个结构体变量
系统会为其分配内存空间吗?
example_list_pointer->prev=NULL 为什么运行到这一句的时候程序会dump掉?
两个都是对指针(即地址)的引用,为什么第一个不会dump掉啊?

|
>>>example_list_struct.prev=NULL 为什么运行到这一句程序不会dump掉?
===================================================================
struct list_head example_list_struct; example_list_struct又不是指针类型,他的空间在堆栈里,在堆栈里example_list_struct 占用了sizeof(struct list_head)的字节.这样写是合法的.

>>>定义一个结构体变量系统会为其分配内存空间吗?
==================================================================
不是动态分配内存的话,系统都会为其分配内存.

>>>example_list_pointer->prev=NULL 为什么运行到这一句的时候程序会dump掉?
==================================================================
example_list_pointer 是一个指针类型,他本身在堆栈里占用4个字节(32位系统),这4个字节保存结构list_head的地址, 而example_list_pointer并没有使他指向一个有效结构list_head的内存空间,这是使用这个指针会造成不可预料的错误. 这样使用是非法的.当使用指针的时候,要么使他指向一个现有的结构地址,或者可以动态分配一块空间.

>>>两个都是对指针(即地址)的引用,为什么第一个不会dump掉啊?
==============================================================
一个是局部变量, 系统会在堆栈中分配sizeof (struct list_head)个空间.
一个指针,系统在堆栈中只是分配一个4个字节的空间用来保存该指针指向的空间的地址,他并没有指向任何有效的结构.

    
 
 
 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • C++ I/O 成员 tellg():使用输入流读取流指针
  • gcc编译CORBA程序如何关闭智能指针转换为普通指针的警告
  • C++ I/O 成员 tellp():使用输出流读取流指针
  • 指向类成员函数的指针其实并非指针
  • 谁说java没指针,我觉得全是指针才对
  • 深入解析C++中的指针数组与指向指针的指针
  • 一个用指针传递内存的问题(如果传进去的是三重指针确不行)
  • busybox中的gzip运行过程中出现page fault错误,并指出出错的指针,但是怎么使用gdb调试,找到指针对应的语句?
  • 关于free指针的指针分量
  • C语言中常量指针与指针常量区别浅析
  • 指教怎样避免空指针。。。 iis7站长之家
  • C++中指向对象的常指针与指向常对象的指针详解
  • 深入理解数组指针与指针数组的区别
  • 深入解析函数指针与返回函数的指针
  • 结构指针类型强制转换
  • 请问return语句会执行哪些操作?在函数中return一个已分配内存的指针,该指针所占用的内存会释放吗?
  • 请问如何在linux (redhat)下传递一维数组指针?
  • C:函数指针
  • 利用函数指针的好处是什么?
  • 野指针问题
  • 关于指针的地址重的问题,求教了。


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3