跪求高手 C语言中的指针原理及代码

跪求高手 C语言中的指针原理及代码,第1张

指针实际上就是一种指向变量地址的变量,即地址,你记着是地址就是了,像一个人找门牌号一样的道理戚中,找到门牌号了就能找到人.

代码:

时钟的代码

#include

<time.h>

#include

<搜仔纯stdio.h>

int

main()

{

time_t

stime

printf("%ld\n",time(

&stime

)

)

}/世咐/

这个程序可以不要求一定使用指针

首先,你要明白一个概念,指针,是做什么的?答案是,指针,是指向地址的。

程序指针,指向的空间,在物理上是Flash,在逻辑上,就是代码空间。比如说源春51单片机的PC指针,指向的旅渗就是Flash,即程序下一步要执行的指令的地址。

数据指针,指向的空间,在物理上有Flash和RAM,在逻辑上是Flash里的常数空间和数据空间,注意,是对于单片机来说,对于我们的电脑,常数空间不是在Flash上。

比如说51单片机的DPTR,如果用MOVC A,@A+DPTR,此时,就是指向常数空间,如果用

MOVX A,@A+DPTR就是指向的数据空间。

堆栈指针,指向的空间,在物理上是RAM,在逻辑上,就是数据空间,是特定的数据空间,堆栈是数据空间中单独划雹镇耐分出来,专门用于寄存中间结果的内存空间。

数据指针和堆栈指针主要有两个区别:

一是数据指针可以指向Flash,即可以指向常数,比如说我们定义一个数组 unsigned char code Table[99],此时,就是DPTR可以指向常数空间。堆栈指针是不可以的,只能是指向RAM。

第二个区别,堆栈指针指向的是特定的数据空间,这个特定的数据空间,是从整个数据空间里划分出来,专门用于作堆栈用的,堆栈区间一旦划分出来,堆栈指针在规则上,就只能在这个范围内活动,如果出了这个范围,可能导致整个程序的崩溃。而数据指针在规则上,可以指向整个数据空间,但是,可以读堆栈空间,不应该去修改,否则也可能导致程序的崩溃。

微机原理里面的$有两重意思。第蔽绝一表示当前地址,如果$出现在程序段,就表示与$同一行的指令地址,如果$出现在数据段中,则表示数据的地址;第二表示字符串的结束符,需要用引号标示,即“$”,例如 string db "abcde$"。

sp是堆栈指针,是指向堆栈数据区的顶端地址,执行一次PUSH、POP指令,sp就会自动增加或减少,使sp始终指向堆栈顶。

pc是程序指针,它指和并悔向的是当前正在执行指令的地址单元,pc的值随着指令的执行而变化,一般不会是最大地址值。

希望我的唤正回答能解决你的疑惑。


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/yw/8231510.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-14
下一篇2023-04-14

发表评论

登录后才能评论

评论列表(0条)

    保存