指针_定义一个指针变量他的值是多少-程序员宅基地

技术标签: C语言  指针  

          指针是C语言管理内存的强大工具。

     1.指针变量的声明

       指针可以视为一个普通变量,通常所说的定义一个指针其实就是一个声明指针变量的过程,编译器根据指针变量声明语句,为指针变量开辟内存空间,使其有实际意义,这样指针变量才可用。

      在声明一个指针变量时,需要向编译器提供以下信息: 

       指针的类型原则上,指针的类型应与其所指向的数据类型一致,但也有例外。

       指针变量名。

       举例来说,下述语句用于声明一个指向int型数据的指针pInt:

       int* pInt;

       不难看出,要声明一个指向某种类型的指针变量,其基本形式为:

      类型* 指针变量名;

      int* p1=NULL;(NULL是C语言中预定义的空指针关键字)

  

    1.2 指针变量的初始化

        在声明一个指针后,编译器不会自动为其完成初始化。此时,指针的值是不确定的,也就是说,该指针的值取决于指针所在的内存区域的值,而该值是完全随机的。因此,指针变量的初始化十分重要,直接使用未加初始化的指针变量,可能会给程序带来各种内存错误,因为完全不知道指针指向的是哪一块内存,通过指针操作的又是哪块内存。

     如果在指针变量的声明之初确实不知道该指针变量指向何处,最简单的方式就是将其置为“0”,C语言中提供的关键字NULL,例如int* p1=NULL;这样,指针便不会在内存中乱指一气了。

    如果想要指针变量确切的指向某个变量,需要使用取地址操作符&。

   

    1.3 指针变量的值

    “指针变量的值”是指针本身存储的数值,这个数值将被编译器作为一个地址,而不是一个一般的数值,在32位程序里,所有的类型的指针的值都是一个32位整数,因为32位程序里内存地址的长度都是32位。“指针所指向的内存区”就是从指针的值所代表的那个内存地址开始的,长度为sizeof(指针所指向的数据类型)的一片内存区。

   “一个指针的值是A”,是指“该指针指向了以A为首地址的一片内存区域”;反之,说“一个指针指向了某个内存区域”,是指“该指针的值是这块内存区域的首地址”。


   1.4取地址操作符

       声明一个变量时,为该变量开辟内存空间的任务是由编译器自动完成的,用户不需要关心变量在内存中的位置。但是,如果,在程序中用到了某个变量的地址信息,则该怎么办呢?C语言提供了取地址运算符&返回某个程序实体的地址信息,举例来说

      int num = 0;

      int* p = #

     &num返回的是变量num在内存中的地址信息,可以直接将此值付给同类型的指针P。


    1.5指针变量占据一定的内存空间

        指针变量声明后,编译器为其开辟一定的内存空间,即指针变量占据一定的内存空间,而且,不论是何种类型的指针,都占据4个字节(这是由32位地址数据决定的)。

      

    1.6指向指针的指针

       指针变量也是变量,占据一定内存空间,有地址。因此,可以用一个指针指向它,这称为指向指针的指针或者二级指针。可以通过“**”声明一个二级指针。

   

      

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/dark_baron/article/details/53466387

智能推荐

产品设计体会(3013)项目的“敏捷沟通”实践-程序员宅基地

文章浏览阅读48次。我一直觉得敏捷是理想与现实妥协的结果,是一种很好的实践,理论网上随便一搜就有很多,这次就说说我身边的团队,真实的实践,通过“沟通”的角度来讲,不妨起个名字叫做“敏捷沟通”。我们的每个项目,项目经理都会建立一个临时的IM群(旺旺)、一个临时的邮件列表,把项目干系人全部加入。邮件列表通常是通过第一封项目相关的邮件,把大家的email整理齐,在邮件最后说明“..._产品模块设计沟通会

Linux 设备驱动管理之内核对象(Kernel Object)机制-程序员宅基地

文章浏览阅读730次,点赞25次,收藏13次。内核对象是Linux内核中的一个基本抽象,用于表示内核中的所有对象,如设备、模块、文件系统等。它不仅是系统资源的代表,还提供了一种标准化的方式来管理这些资源。内核对象(kobject)是Linux内核中用于管理和表示内核资源的抽象基础结构。kobject机制与sysfs紧密集成,提供了一种标准化的方法来管理不同类型的内核资源,并使内核能够以一种可扩展和动态的方式与用户空间交互。理解kobject对于开发和理解Linux设备驱动至关重要。

全网首发,Python解决某象滑动还原验证码100%还原_python还原验证图片-程序员宅基地

文章浏览阅读1.1k次。与一般的滑动验证码不同,某象的滑动还原验证码是将图像上下两块分割,然后在随机一块往右移动,将两块拼图移动成完整的图像才算成功,事实上,解决这类验证码比普通的验证码还要简单。_python还原验证图片

Win7下多线程中OpenFileDialog和SaveFileDialog失效的解决办法(转载)-程序员宅基地

文章浏览阅读185次。在程序中,通常会使用独立线程来操作OpenFileDialog或者SaveFileDialog控件,但是在某些情况下(Win7系统下)调用 ShowDialog方法并不显示选择路径对话框。此时需要对启动线程的地方进行处理一下即可,方法如下: 方法一 Threadapp=newThread(newParameteriz在程序中,通常会使用独立线程来操作OpenFileDialog或者SaveFile..._win7 openfiledialog

vim常用命令以及配置文件_vim dw命令-程序员宅基地

文章浏览阅读1.7k次,点赞9次,收藏9次。vim常用命令以及配置文件_vim dw命令

python3一键安装脚本_Linux编译安装python3(附一键安装脚本)-程序员宅基地

文章浏览阅读444次。Linux下大部分系统默认自带python2.x的版本,最常见的是python2.6或python2.7版本,默认的python被系统很多程序所依赖,比如centos下的yum就是python2写的,所以默认版本不要轻易删除,否则会有一些问题,如果需要使用最新的Python3那么我们可以编译安装源码包到独立目录,这和系统默认环境之间是没有任何影响的,python3和python2两个环境并存即可首..._python3一键安装脚本

随便推点

近日学习总结-程序员宅基地

文章浏览阅读49次。毫无疑问,intel DRD部门面跪了,加上上次的DataCenter,现在已经是败上加败,加上近日看书效率太低,很多时候在同一个知识点打转,今天一天几乎没有看什么实质性内容。我觉得自己有几点需要注意:一、端正思想,开弓没有回头箭,既然选择了转行,选择了JAVA,即便是逆流而上,也要义无反顾的走下去!二、必须走一条高速、高效的道路。最重要的是第二点,让自己每天都能看到自己的进步,每...

JSP中<c:foreach></c:foreach>标签注意事项_jsp <c:for>-程序员宅基地

文章浏览阅读160次。c:foreach>是我们在jsp页面中处理循环是所使用的标签如下,但是items中必须是一个集合,否则就会报错。_jsp

IRQ中断服务函数_gtmr_irqhandler()-程序员宅基地

文章浏览阅读207次。IRQ中断服务函数是由操作系统或开发人员编写的函数,当IRQ中断请求到达服务器时,处理器会暂停当前任务,保存上下文,并跳转到相应的中断服务函数执行对应操作。_gtmr_irqhandler()

报错:“不是有效的Win32应用程序”的解决办法-程序员宅基地

文章浏览阅读937次。Win7、Win8下用VS2013编译完的程序,拿到32位WindowsXP虚拟机下运行有时候会报错:解决办法如下:进入工程的属性,修改:再修改:即可转载于:https://www.cnblogs.com/predator-wang/p/4788814.html..._tts speak 不是有效的win32应用程序

_tkinter.TclError: invalid command name “tixComboBox“ 的解决办法_invalid command name ".!toplevel.!labelframe.!comb-程序员宅基地

文章浏览阅读762次。修改为 ttk.Combobox()根据Pycharm的自动导入class tkinter.tix.ComboBox,但根据Mannuals描述这个库应该已经废弃了Deprecated since version 3.6: This Tk extension is unmaintained and should not be used in new code. Use tkinter.ttk instead.所以导入ttk自动补全可知应该为ttk.Combobox()..._invalid command name ".!toplevel.!labelframe.!combobox4

常见电机工作原理-程序员宅基地

文章浏览阅读2k次,点赞3次,收藏16次。参考链接:https://space.bilibili.com/1855672581?spm_id_from=333.788.b_765f7570696e666f.1一、直流有刷电机定子:一边一个定子为极性相反的电磁铁转子:由很多线圈绕成,通电后就是电磁铁换向器:换向器上连接着线圈,电机旋转时可以给不同线圈供电保持旋转电刷:后面有个弹簧顶着,使它保持与换向器紧贴着供电二、无刷直流电机1.介绍无刷电机没有电刷,内部不会产生火花或摩擦噪音,也不需要更换、维护电刷。定子具有绕组和线圈激_电机工作原理

推荐文章

热门文章

相关标签