指针基本概念

指针和指针变量

  指针就是内存的地址编号

  指针变量,本质是变量,只是该变量保存的是内存的地址编号(不是普通的数值)

指针变量的定义

  用 * 来修饰指针变量。例如:

    1、定义一个指针变量p 保存 int num的地址                                              int *p;

    2、定义一个指针变量p 保存数组int arr[5]首地址                                      int (*p)[5];

    3、定义一个指针变量p 保存函数的入口地址 int fun(int,int)                      int (*p)(int,int);

    4、定义一个指针变量p 保存结构体变量的地址  struct stu lucy                struct stu *p;

    5、定义一个指针变量p 保存指针变量int *p的地址                                    int **p

  在32位平台,任何类型的指针变量都是4字节

  在64位平台,任何类型的指针变量都是8字节

  指针变量和普通变量建立关系,如下图所示

 

 

 

指针变量的初始化

  1、指针变量如果不初始化,立即操作会出现段错误

  2、指针变量如果没有指向合法的空间,建议初始化为NULL(不要操作指向NULL的指针变量)

 

  3、将指针变量初始化为合法地址(变量的地址、动态申请的地址、函数入口地址)。例如:

    int data = 10, *p = &data;

  注意:

    指针变量在操作之前,必须指向合法的地址空间

    int *p = NULL;    //NULL是赋值给p       完整的表达式:int *p;    p = NULL;

指针变量的类型

  将指针变量名遮盖,剩下的类型就是指针变量自身的类型。例如:

    int *p;             p自身的类型就是  int *

  指针变量自身的类型,一般用于赋值语句判断

  将指针变量名和离它最近的一个 * 一起遮盖,剩下的类型就是指针变量指向的类型。例如:

    int *p;        p指向的类型为Int

 指针变量的注意事项

  1、void 不能定义普通变量

    例如:void num;  //error     void不能给num开辟空间

  2、void * 可以定义指针变量

    例如 void *p;     因为p是void * 类型(p是万能的一级指针变量,能保存任意以及指针地址编号)

    万能指针一般用于函数的形参,以达到算法操作多种数据类型的目的(不能对万能指针变量取 * ,因为p的指向类型为void,无法确定p的取值宽度)

  3、指针变量未初始化,不要取*

    例如:int *p;              *p;      //提示段错误

  4、指针变量初始化为NULL,不要取*

    例如:int *p = NULL;         *p;                //提示段错误

  5、指针变量不要越界访问

 

posted @   牙齿凤  阅读(69)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· .NET10 - 预览版1新功能体验(一)
点击右上角即可分享
微信分享提示