黑马程序员----c基础笔记----指针

本文介绍了计算机内存地址的概念,强调了内存地址与存储数据的区别,并详细讲解了C语言中的指针,包括指针作为内存单元的地址、使用指针的好处,如函数参数传递、动态数据结构的支持。同时,阐述了指针变量的定义和二级指针的概念。
摘要由CSDN通过智能技术生成

------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! ------

1、地址概念的理解:

             计算机硬件系统的内部存储器中,拥有大量的存储单元(容量为1字节)。为了方便管理,必须为每个存储单元编号,这个编号就是存储单元的“地址”。每个存储都有一个唯一的地址。

                      内存地址———内存单元的编号

             在地址多标示的存储单元中存放数据。

                     注意: 内存单元的地址与内存单元中的数据是两个完全不同的概念。

                              变量地址———系统分配给变量内存单元的起始地址

2、指针

           内存单元的编号也叫地址。既然根据内存单元的编号或地址找到所需的内存单元,所以通常也把这个地址称为指针。

          使用指针的好处

                 1)为函数提供修改调用变量的灵活手段

                 2)让函数有多个返回值

                 3)可以改善某些子程序的效率

                       在数据传递时,如果数据块较大(比如说数据缓冲区或者较大的结构),这时就可以使用指针传递地址                          而不是实际数据,既提高传输速度,又节省大量内存。

                 4)为动态数据结构(如二叉树、链表)提供支持

           变量的存储方式:

                  直接存储

                  间接存储(通过指针操作间接完成)

3、指针变量

             1)指针变量的概念

                  在c语言中,允许用一个变量来存放指针,这种变量称为指针变量。因此,一个指针变量的值就是某个内存单元的地址或称为某个内存单元的指针

             2)指针变量的定义

                         一般形式:

     类型说明符 *变量名;

                    其中,*表示这是一个指针变量,变量名即为定义的指针变量名,类型说明符表示指针变量所指向的变量的数据类型。

    代码及理解:

#include <stdio.h>

int main(int argc, const char * argv[]) {
    int *p;//定义了一个指针变量,变量名是p
           //int表示 ,p只能存放一个int类型的变量的地址
    char *p1; //定义了一个指针变量,变量名是p1
              //p1只能存放一个char类型数变量的地址
    return 0;
}
4、二级指针

            二级指针的介绍:

               如果一个指针变量存放的又是另一个指针变量的地址,则称这个指针变量为指向指针的指针变量

    代码及理解:

#include <stdio.h>

int main(int argc, const char * argv[]) {
  //定义一个指针变量
    int *p = &a;
    printf("&a = %p\n",&a);
    printf("p =%p\n",p);
    printf("-----------------\n");
    //定义一个二级指针
    //**的个数等于等级
    int **p1 = &p;
    printf("&p =%p\n",&p);
    printf("p1 =%p\n",p1);
    printf("--------------\n");
    printf("*p =%d\n",*p);
    //p的值, a的地址
    printf("*p1 =%p\n",*p1);
    return 0;
}

 







评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值