设计与开发

单片机 指针 C语言中的指针怎么理解?

小编 2024-10-11 设计与开发 23 0

C语言中的指针怎么理解?

今日话题,C语言中的指针怎么理解?其实,理解C语言指针就像理解Windows桌面上的快捷方式一样简单。快捷方式可以指向不同的目标,类比于C语言中的指针。普通指针就像是一个快捷方式指向某个游戏。这就是普通指针,它指向一个特定的目标。指向指针的指针: 现在,这个快捷方式指向另一个快捷方式。这就像C语言中的指向指针的指针,它可以指向另一个指针。指向数组的指针: 这个快捷方式可能指向一个文件夹,就像C语言中的指向数组的指针。文件夹中有多个项目,就像数组中有多个元素。带偏移量的指针: 如果你告诉室友“打开桌面上名为“音乐”的快捷方式,播放第3首歌”,那么你是在使用带有偏移量的指针。你从目标位置偏移,执行特定操作。指向指针数组的指针: 假设你有一个指向文件夹的快捷方式,而这个文件夹包含多个快捷方式,每个都代表一个游戏。你可以使用指向指针数组的指针来方便地调用它们。还有不懂的可以看这一份嵌入式学习资料,里面有各类语言编程教学、问题讲解、语言类教学和毕设800套,小白都能学会,有基础的对于精通也颇有帮助。评论区放个666,关注后私我一个“6”,让你不再担心资料稀缺的问题,全部免费发给你。

怎么样快速的学习吃透C语言之指针?

想学习单片机的同学可以关注、私信我或者在评论区回复我要入门。初学者在C语言的学习过程中遇到的最头疼的知识点大概率是指针,指针在C语言中是非常重要的。下面我们就来了解一下指针的内容。

指针本身是一个变量,它存储的是数据在内存中的地址而不是数据本身的值。它的定义如下:

int a=10,*p;

p=&a

int a=10;

int *p=&a;

首先我们可以理解 int*这个是要定义一个指针p,然后因为这个指针存储的是地址所以要对a取地址(&)将值赋给指针p,也就是说这个指针p指向a。

很多新手都会对这两种定义方法感到迷惑,其实他俩的意思是一样的。第一种定义方法定义了int型的变量a和指针p,然后将a的地址赋给p。第二种是在定义指针p的同时将a的地址赋给指针p。我们姑且理解为" int * "是定义指针的标志。

指针有什么用?

这样我们就可以通过*p来找到指针所指向的变量a的地址,然后对地址中的值(值是10)进行操作。

//接着上面的代码

printf("%p",p) //结果是一个地址(p指向的变量a的地址)。

printf("%d",*p) //结果是10,变量a的值。

printf("%d",&p) //结果是一个地址(指针p的地址,因为指针也是一个变量自己也有地址的)

数组名和指针的区别?

数组名是一个地址,它可以被理解为一个常指针(它只能指向本数组首元素的地址)。而指针可以指其他的变量等等。

int str[5]={1,2,3,4,5};

int *p=str;

printf("%d",*p); //输出为1,数组的首元素。

printf("%d",*str); //输出为1,数组的首元素。

printf("%d",str[0]); //输出为1,数组的首元素。

printf("%p",p); //输出为地址,数组的地址。

printf("%p",str); //输出为地址,数组的地址。

printf("%d",*(p+1)); //输出为2,数组的第二个元素。

printf("%d",*(srt+1)); //输出为2,数组的第二个元素。

对照代码大家可以很清晰的看到数组名在对内存中存储的数据进行操作的方法和结果是一样,但是数组名存储自己数组本身的首地址。

什么是空指针,野指针?

在函数内部对指针进行赋值操作后,在函数执行完毕后,该指针就成了一个空指针(变量从栈中弹出)。但是通过动态地址分配(堆空间)的指针不会有上述问题。

free(p)后释放内存的指针为野指针。

关于const对于指针的限制问题

int a=10,b=20;

int * const p=&a; //无法使p指向其他地址。

p=&b; //这样的操作是不允许的。

*p=20; //可以这样操作。

const int * p=&a; //p可以指向其他地址。

p=&b; //可以操作。

*p=10; //操作不被允许。

const int * const p=&a //p不能指向其他地址,也不能改变地址中的值。

p=&b; //操作不被允许。

*p=20; //操作不被允许。

const在int的左边那就是不能修改地址中的值,在右边就是不能指向其他地址,左右都有那就是既不能修改地址的值也不能指向其他地址。

本期先分享到这里,想要进群学习单片机编程的同学可以私信我,回复“我要入门”,与我们一起成长,喜欢的可以点个赞关注我们!

相关问答

单片机指针 用得多吗?

单片指针,数组等都会用的。使用指针能大大的简化你的代码量,而且也方便理解。可以说所有和数据处理相关的操作都可以用指针。所以在单片机上一样可以使用指针...

单片机指针 类型?

单片机C语言变量分别有char型,int型,long型,float型等,它们分别占用内存为1个单元,2单元,4单元,4单元等,另外数组和字符串则占用了内存某段连续的单元。...单...

数据 指针 是什么意思?

数据指针是一种变量类型,用于存储内存地址。它指向内存中的特定数据,允许程序直接访问和操作该数据。通过数据指针,程序可以动态地分配和释放内存,实现高效的...

单片机 什么情况下用 指针 ?

1.在单片机编程中,指针可以用于访问内存中的特定位置,以便进行数据操作。2.当需要对内存中的某个变量进行修改或者读取时,可以使用指针来定位该变量的内存地...

什么是堆栈,51 单片机 堆栈 指针 SP的使用?

堆栈都是一种数据项按序排列的数据结构,只能在一端(称为栈顶(top))对数据项进行插入和删除。在单片机应用中,堆栈是个特殊的存储区,主要功能是暂时存放数据...

单片机 SP是什么意思?

SP是堆栈指针,指向堆栈操作的单元地址,是8位计数器。SP是堆栈指针,指向堆栈操作的单元地址,是8位计数器。

SP=70 PC=2345H,MCS-51 单片机 执行调用指令LCALL 3456H后堆栈 指针 和堆栈中内容是什么?

调用指令执行时,将保护返回入口地址,即在2345H处存放的LCALL3456H之后的指令,2348H位置。低8位先入栈。SP自动加2。CPU的取指PC指向3456H。此时:SP=72。PC=3...

at89c52 单片机 的内部系统 指针 有哪些?

AT89C51/52单片机内部指针有3个,一个是16位程序地址指针PC,用来寻址内部程序存储器,也就是用来执行用户程序;第二个是16位数据指针DPTR,本质上它是地址指针...

c语言 指针 占用多少内存?

c语言指针占用的内存是:32单片机占4个字节,64单片机的占用8个字节。这是因为,在C语言中一个指针变量在内存中占两个字节(small模式编译)所以一个指针变量在...

51 单片机 中@指令作用?

严格地说,@是51单片机间址指令使用的符号,而不是指令。按规范要求,51单片机程序在使用间接寻址指令时,需要在地址指针寄存器前加@符号,例如用R0作为指针给R...

猜你喜欢