0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

C语言中指针变量简述

嵌入式应用开发 来源:嵌入式应用开发 作者:嵌入式应用开发 2022-09-09 08:55 次阅读

指针是变量,那必然会有变量类型,因此这里必须对变量类型做解释。在C语言中,所有的变量都有变量类型,整型、浮现型、字符型、指针类型、结构体、联合体、枚举等,这些都是变量类型。变量类型的出现是内存管理的必然结果,相信读者知道,所有的变量都是保存在计算机的内存中,既然是放到计算机的内存中,那必然会占用一定的空间,问题来了,一个变量会占用多少空间呢,或者说应该分出多少内存空间来放置该变量呢?为了规定这个,类型由此诞生了,对于32位编译器来说,int类型占用4个字节,即32位,long类型占用8字节,即64位。这里简单说了类型主要是为后面引出指针这个特殊性,在计算机中,将要运行的程序都保存在内存中,所有的程序中的变量其实就是对内存的操作。

#include "stdio.h"

int main(int argc, char **argv)
{
    unsigned int a = 10;
    unsigned int *p = NULL;
    p = &a;
    printf("&a=%d\n",a);
    printf("&a=%d\n",&a);
    *p = 20;
    printf("a=%d\n",a);
    return 0;
}

运行之后,结果如图:

poYBAGMZ4KaAOMFjAAA2FHvcDxQ921.png

指针也是一个变量,那个指针也应该被存放在内存中,对于32位编译器来说,其寻址空间为2^32=4GB,为了能够都操作所有内存(实际上普通用户不可能操作所有内存),指针变量存放也要用32位数即4个字节。这样就有指针的地址&p,指针和变量的关系可以用如下图表示:

poYBAGMZ4OWAKwIyAABuqOukfgk263.png

从上图可以看到&p是指针的地址,用来存放指针p,而指针p来存放变量a的地址,也就是&a,还有一个*p在C语言中是解引,意思是告诉编译器取出该地址存放的内容。

poYBAGMZ4QuAIGh2AABHkopwFVU324.png

对于不同类型指针而言,其p+1所指向的地址不同,这个递增取决于指针类型所占的内存大小,而对于((unsigned int)p)+1,该意思是将地址p所指向的地址的值直接转换为数字,然后+1,这样无论p是何种类型的指针,其结果都是指针所指的地址后一个地址。

从上述可以看到,指针的存在使得程序员可以相当轻松的操作内存,这也使得当前有些人认为指针相当危险,这一观点表现在C#Java语言中,然而实际上用好指针可以极大的提高效率。下面深入一点来通过指针对内存进行操作,现在我们需要对内存6422216中填入一个数据125,我们可以如下操作:

unsigned int *p=(unsigned int*)(6422216);
*p=125;
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • C语言
    +关注

    关注

    180

    文章

    7522

    浏览量

    127514
  • 指针变量
    +关注

    关注

    0

    文章

    17

    浏览量

    7198
收藏 人收藏

    评论

    相关推荐

    C语言中指针变量的使用

      在使用时,一定要注意上面“*“号的用法差异。还需要注意的是,一个指针变量只能指向与其数据类型相同的变量
    发表于 08-15 15:12 1492次阅读
    C<b class='flag-5'>语言中指针</b><b class='flag-5'>变量</b>的使用

    C语言中指针的定义

    上一节中,我们利用了一个小知识来介绍了一下指针,在上面这个例子中,小明和小丽手中的这个杯子就好比我们C语言中变量,它确实是实实在在存放一些有具体意义的数据。这个杯套就类似于C语言中指针
    发表于 08-15 16:24 1659次阅读
    C<b class='flag-5'>语言中指针</b>的定义

    C语言中指针的定义与使用

    指针也就是内存地址,指针变量是用来存放内存地址的变量,不同类型的指针变量所占用的存储单元长度是相
    的头像 发表于 10-13 17:00 1741次阅读

    C语言指针加1引发的思考

    最近有小伙伴对于 C 语言中指针的运算有点疑问:指针变量加 1 之后,到底向后偏移了几个字节呢?
    的头像 发表于 01-29 11:31 909次阅读

    C语言中指针的基本概念和用法

    在C语言中指针是一项重要的概念,它允许我们直接访问和操作内存地址。
    发表于 08-17 15:30 503次阅读

    谈谈C语言中指针有什么好处,请各位高手们谈谈自己的体会

    谈谈C语言中指针有什么好处,请各位高手们谈谈自己的体会...
    发表于 09-01 17:38

    语言中指针的介绍

    的内容。在C语言中, 允许用一个变量来存放指针,这种变量称为指针变量。因此,一个
    发表于 09-10 14:22

    C语言中指针是什么?如何规避野指针

    C语言中指针是什么?有哪几种类型?指针有何作用?如何规避野指针
    发表于 02-25 06:47

    C语言中的结构体指针在访问的时候怎么读取成员变量的数据?

    C语言中的结构体指针在访问的时候怎么读取成员变量的数据
    发表于 10-10 07:07

    C语言中指针的介绍非常详细

    C语言中指针的介绍非常详细 C语言中指针的介绍非常详细
    发表于 12-25 10:39 57次下载

    基于C语言中指针的基本用法解析

    我C语言中其它的知识都学得可以,唯独指针搞不懂。如果是这样,我可以很负责的告诉你,对于这门编程语言,你等于是没学。所以学好指针对于初学者是非常重要的。或许你会觉得它有点抽象,但是当你彻
    的头像 发表于 01-09 15:12 4589次阅读

    C语言中的野指针是怎么来的?

    一、什么是野指针指针是C语言的灵魂,同时也是很容易让人犯错的重难点,用错了指针将是一个灾难。 指针
    的头像 发表于 06-01 16:43 2318次阅读

    C语言中指针(重点)超详细

    - 指针4.3、指针的运算关系5、指针和数组6、二级指针7、指针数组1、指针是什么??在计算机
    发表于 01-13 14:10 11次下载
    C<b class='flag-5'>语言中</b>的<b class='flag-5'>指针</b>(重点)超详细

    C语言中什么是指针数组

    在C语言中一个数组,若其元素均为指针类型数据,称为指针数组,也就是说,指针数组中的每一个元素都存放一个地址,相当于一个指针
    的头像 发表于 03-10 15:26 1263次阅读

    简述C语言中指针重点

    在C语言中一个函数可以返回一个整型值、字符值、实型值等,也可以返回指针型的数据,即地址,其概念与以前类似,只是返回的值的类型是指针类型。
    的头像 发表于 03-10 15:28 417次阅读