c语言 如何键入一个IP地址保存在指针中

c语言 如何键入一个IP地址保存在指针中,第1张

char  ip = (char )malloc(sizeof(char)  30);

scanf("%s", &ip);

使用完了记得释放内存:

free(ip);

PC是程序计数器,PC寄存器中的内容是下一条要取的指令的16位存储单元地址,在程序执行的过程中,PC中的值会自动加1。IP寄存器是CPU在地址总线上输出这个地址信号,这个地址信号对于寄存器来说是输入,这就选中了存储器中相应的单元,然后在R/W上发出读信号,从存储器中的那个单元读出指令,从数据总线上传到CPU。IP就是单片机中断优先级控制,CPU从指令指针寄存器IP中获得指令的内存地址,然后取出指令,放到指令寄存器IR。接下来,IP自己加1,也就是指向下一条指令。

这个没有什么为什么,从一开始就这样了。因为我们没那个能力去精确控制到ip,我们不知道每个指令的ip是多少,甚至在程序运行中我们对内存的实际分配一无所知,允许对ip的修改不但没什么帮助,反而会因为ip的误 *** 作而产生很多其他未知的错误。

ip++与(ip)++是一样的,没区别。都是指向ip所指地址的下一个地址。

但是 ip++与(ip)++ 决然不同。虽然你没问这个,但是顺便提一下:

由于++的优先级高于(解引用 *** 作符),所以ip++的运算顺序是(ip++),意思是先使ip指向当前地址的下一个地址,然后再取出新地址的值;而(ip)++的意思先读取ip当前所指地址中的值,然后令该值加1。

举个例子:

------------------------------------------

地址 值

ip → 0x40001000 10

0x40001004 15

0x40001008 21

-----------------------------------------

假定ip一开始指向地址0x40001000,该地址的值为10。

则执行ip++时,先将ip指向下一个地址0x40001004,然后读取该地址的值15。

而执行(ip)++时,先读取ip所指地址0x40001000处的值10,然后令该处的值自增1,变为11。

以上就是关于c语言 如何键入一个IP地址保存在指针中全部的内容,包括:c语言 如何键入一个IP地址保存在指针中、程序计数器(pc)与指令指针寄存器(ip)区别、为什么程序员不能对指令指针ip进行存取 *** 作等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

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

原文地址: https://outofmemory.cn/zz/9761166.html

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

发表评论

登录后才能评论

评论列表(0条)

保存