C语言:指针学习以及理解

C语言:关于指针学习以及理解

一、什么是指针

首先,指针是一种数据类型,使用它定义的变量叫指针变量。指针变量是一个特殊的变量,它里面存储的数值被解释成为内存里的一个地址指针的值是一个地址

指针的四个要素?:指针的类型、指针所指向的类型、指针的值 (指针所指向的内存区,即指向的地址) 、指针本身所占据的内存区(指针本身的地址)。
在这里插入图片描述

(根据上图)举个例子:
int a=111;
int *p = &a;

上面两句语句中可得出:
p 是指针变量
指针类型:  p 是一个 int 类型的指针
指向类型:  p 指向一个 int 类型的数据 a
指针的值:  p 的值是0x30009 ( 即 p 指向的地址是0x30009 )  
指针的地址:p 所占据的内存区 (即 p 本身的地址为0x30001)    

所以要注意:指针的值指针的地址 不是同一个东西,一个代表 p ,另一个代表&p 。

二、为什么使用指针、什么情况下使用指针

1、函数之间无法通过传参共享变量。
函数的形参变量属于被调用于者,实参属于调用者,函数之间的变量名字空间相互独立是可以重名的,函数之间的数据传递都是值传递(赋值、内存拷贝)。
2、使用指针可以优化函数之间传参的效率。(无需传递数组中所有参数,直接传递数组首地址)
3、堆内存无法与标识符建立联系,只能配合指针使用。

三、如何使用指针

? 定义:类型 * 变量名p;
1、指针变量与普通变量使用方法有很大区别,一般以 p 结尾,与普通变量区分开。
2、* 表示此变量是指针变量,一个 * 只能定义出一个指针变量,不能连续定义。

   int* p1,p2,p3;  // p1是指针,p2,p3是int类型变量
   int *p1,*p2,*p3; // 三个指针变量

3、类型表示的是存储是什么类型变量的地址,它决定当通过地址访问这块内存时访问的字节数。
4、指针变量的默认值也是不确定,一般初始化为NULL(空指针)。

? 赋值操作:指针变量 = 地址

    栈地址赋值:
        int num = 0;
        int* p = NULL;
        p 
  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值