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进行存取 *** 作等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)