千家信息网

C语言指针的基础知识点有哪些

发表于:2026-11-01 作者:千家信息网编辑
千家信息网最后更新 2026年11月01日,这篇文章主要介绍了C语言指针的基础知识点有哪些,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。1.1:概述1.1.1:内存内存含义:储存
千家信息网最后更新 2026年11月01日C语言指针的基础知识点有哪些

这篇文章主要介绍了C语言指针的基础知识点有哪些,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。

    1.1:概述

    1.1.1:内存

    内存含义:

    • 储存器:用来存储程序和数据,辅助CPU进行运算处理的重要组成部分。

    • 内存:内部存储器,暂时存放程序/数据。

    • 外存:外部储存器,长时间保存程序/数据。

    1.1.2:内存

    内存地址:

    • 可以理解为将内存抽象成一个很大的一维数组。

    • 编码就是将内存的每一个字节分配一个32位或者64位的编号。这个内存编号我们就称为地址

    1.1.3:指针和指针变量

    • 内存中每一个字节都有一个编号,我们称之为"地址"。

    • 指针的实质就是内存的"地址"。地址就是指针,指针也就是地址。

    • 指针是地址,而定义的指针变量是存放地址的变量。

    1.2:指针基础知识

    1.2.1:指针变量的定义和使用

    - 指针是一种数据类型,指针变量是一种存放地址编号的变量。

    -'*' 解引用操作符,表示指针所指的内存空间的具体内容。

    打印变量的地址:(用%p)


    解引用操作符的运用:


    int * 代表了指针类型,p是定义的指针类型的变量,将a的地址赋给变量P,这是p中存的是a的地址编号,p就指向了a的空间,*P就表示a空间里的内容,也就是a的值。

    1.2.2:通过指针间接修改变量的值

    前面我们提到了关于由const修饰的局部变量的修改,不可以通过赋值直接修改,这里我们介绍通过指针间接的修改变量的值。


    当直接修改由const修饰的常量时,我们可以看出会发生错误。


    这时我们定义一个指针变量间接的修改局部变量的值是可以的!我们用个图来辅助理解:

    1.2.3:指针的大小

    • sizeof() 测得是指针变量指向的储存地址的大小。

    • 在32位平台,所有指针地址都是32位(4字节)。

    • 在64位平台,所有指针地址都是64位(8字节)。

    1.2.4:空指针与野指针

    • 空指针(NULL):主要用于给指针变量初始化,空指针是指向内存地址编号为0的空间。int * P = NULL;

    • 野指针:对我个人理解而言,对于野指针我理解为指向一个未知的空间,(通俗来讲,就是我虽然知道这块内存的地址编号,但是我并不知道这块内存具体存放的是什么内容)。下面我介绍两野指针常见错误。

    ①:任意数值赋值给野指针。

    ②:操作野指针指向的内存区域。

    1.2.4:万能指针

    这里我们不做详细的介绍,void * 指针可以指向任意变量的内存空间:


    特别注意:我们在对万能指针进行操作时,因为系统需要知道具体需要对几个字节的内容进行操作,所以我们需要强转成具体的指针类型。

    1.2.5:const修饰的指针变量

    const修饰指针变量时,因const的位置不同,修饰的意义也有所不同,如下代码:


    对于p1 ,const可以理解为修饰的*p1,也就是修饰的空间的内容,这时这块空间的地址是可以重新赋值的,而内容不可以!

    对于p2,const修饰的是指针变量p2,也就是修饰的空间地址,所以这时可以对内容进行辅助,而不可以改变变量的地址!

    注:在编写程序时,指针作为函数参数传递,如果对应的内存空间的值不会被修改,可以使用const修饰指针数据类型。

    1.3:指针与数组

    1.3.1:数组名

    敲重点:对一维数组来说,数组名是首元素地址,是一个常量!!,不可以修改,切记切记,对二维数组来说,此时数组名也是首元素地址,只不过此时的首元素不再只是一个元素,而是一个一维数组。

    1.3.2:指针操作数组

    其实博主觉得,用指针操作数组可读性还是比较差,而且后续面对多维数组,用指针来操作数组比较麻烦,可读性差。无奈博主学艺不精呀。


    这里*(arr + i) 与arr[i]的效果一摸一样,这里的知识点涉及到指针的加减运算,见下一小节。

    1.3.3:指针的加减运算

    (1) 加法运算

    指针计算绝对不是简单的整数相加,这里与指针类型有关:

    • 如果是一个整型指针,那么+1的效果就是变化一个int的大小。

    • 如果是一个字符型指针,那么+1的效果就是变化一个char的大小。


    此时数组名是首元素1的地址,属于整型指针,+2表示变化2个int的大小,也就是第三个元素的地址。

    (2) 减法运算

    这里对于指针减一个整数的作用与加法如出一辙,也是与指针类型有关。


    这里我们利用一个逆序打印数组来说明指针减法,特别注意 arr与&arr分别+1的区别,arr表示的是首元素地址,&arr表示的是整个数组的地址,arr + 1变化4字节,而&arr + 1 变化的是整个数组大小的字节数(36)。如图:



    我们可以看出,打印&arr与arr的地址编号是一样的,但是意义是不一样的。 1.3.4:指针数组

    指针数组还是一个数组,数组元素都是指针类型,拿一级指针数组举例:


    这里博主提一点自己对一级指针数组的理解,希望对大家有一丢丢帮助,一级指针数组我把它与二级指针、二维数组相对应,这里不做详细解释,后续指针强化我会解释我的理解,这种理解可能按官方说法来说不严谨,但是能帮助我们理解就好。

    1.4:指针基础小结

    • int i:定义整型变量

    • int * p:定义一个指向int的指针变量

    • int **p:定义一个二级指针,指向一级指针。

    • int arr[10]:定义一个有10个整型元素的数组。

    • int *arr[10]:定义一个有10个一级指针元素的数组。

    感谢你能够认真阅读完这篇文章,希望小编分享的"C语言指针的基础知识点有哪些"这篇文章对大家有帮助,同时也希望大家多多支持,关注行业资讯频道,更多相关知识等着你来学习!

    指针 地址 数组 变量 内存 元素 空间 指向 类型 字节 内容 大小 就是 知识 也就是 数据 变化 运算 基础 程序 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 北京路客互联网科技有限公司 科技互联网公司装修 互联网 科技公司 互联网公司 科技公司 齐家互联网科技 深圳期待互联网科技 中国最先进互联网科技公司 蓝色互联网科技 互联网和高科技公司 新华互联网科技2019 开一家科技互联网公司需要多少钱 互联网科技大奖都有哪些公司 南博望互联网科技有限公司 卓翼科技产业互联网合作 滨湖区互联网智能科技产品有哪些 长沙渺峰互联网科技有限公司 互联网的科技体现在哪里 互联网科技创新方面的资料 科技互联网企业在行动 互联网科技创业有什么好项目 互联网佳科技有限公司 科技平台互联网 互联网科技有限公司经营范围 互联网最新的科技有限公司 互联网与未来科技 互联网科技网站 华中科技有哪些互联网大佬 河南猎农互联网科技有限公司 广州百诚互联网科技有限公司官网 互联网的科技体现在哪里
    0