黑马程序员-c语言指针总结

一、指针概述

    1. 指针概念:
         内存单元的编号叫做地址,我们根据内存单元的编号或者地址可以找到所需要的存储单元,我们把这个地址叫做指针。
         对于一个内存单元来说,该内存单元的地址就是指针,其中存放的数据才是该内存单元的内容。
    2. 使用指针的优点:
        1)为函数提供调用和修改变量的灵活手段
        2)让函数有多个返回值(通过形参传递地址,可以修改主调函数中变量的值)
        3)改善某些子程序的效率(数据块较大,不适合传递,可以将其地址传递)
        4)为动态数据结构提供支持(二叉树、链表)
    3. 变量的存取方式:
        直接存取:变量的赋值和取值

        间接存取:通过指针间操作完成

二、指针变量
    1.概念:
       在C语言中,允许一个变量来存放指针,这种变量称为指针变量。因此,指针变量的值就是某个内存单元的地址或称为某个内存单元的指针。
       注意:指针是一个地址,是常量。指针变量是存放一个地址,是变量。
    2. 定义一个指针:
        类型说明符 *变量名;
        *表示这是一个指针变量,变量名即为定义的指针变量名,类型说明符表示本指针变量所指向的变量的数据类型。
    3. 指针初始化
         1)定义时初始化: int a=3; int *p = &a;
         2)定义后初始化: int a=3,*p;  p = &a;
         3)定义后不知道指向哪里: int *p=NULL;
    4. 指针使用前,必须初始化!刚定义的指针,没有进行初始化时,是一个野指针,指向一个垃圾值。
    5. 指针为什么区分类型:
        在64位的编译器里,所有类型的指针都是固定8个字节(32位4个字节),但是不同类型的变量却占用不同的字节数。指针区分类型后,按访问指向的数值时可以根据指针类型长度进行取值。定义什么类型的的指针,就指向什么类型的变量。
三、数组指针
    1. 一个变量有地址,一个数组包含若干个元素,每个数组元素都有相应的地址。指针变量可以指向数组元素,所谓数据元素的指针,就是数组元素的地址。可以用一个指针指向一个数组。
    2. 假设一个数组的数组名为a,a不代表整个数组,只代表数组首元素的地址。
        例如: int *p = a; 表示指针变量p指向了数组首个元素a[0]
 
四、指针函数
    1. 概念:C语言中允许一个函数的返回值是一个地址(即指针),这种返回值是指针的函数称为指针函数。
    2. 定义:  返回值类型 *函数名(形式参数列表){   //函数体  }
 
五、函数指针
    1. 概念:C语言中,一个函数总是占用一个连续的内存区,而函数名就是该函数所占内存区的首地址。我们把这个首地址(入口地址)赋值给一个指针变量,使该指针变量指向该函数。然后通过这个指针变量就可以调用该函数。我们把这种指向函数的指针变量称为“函数指针变量”。
    2.定义:类型说明符 (*指针变量名)(形式参数列表)
      例如:某一函数声明:int max(int x,int y);  函数指针定义: int (*p1)(int x,int y);

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值