一行C语言关机代码进阶之路,细节拉满,轻松解读复杂代码

开发 后端
本篇带给大家一行C语言关机代码进阶之路,让你轻松解读复杂代码,希望对你有所帮助!

[[404638]]

c语言关机程序最终版

  1. #include <stdio.h> 
  2. #include <stdlib.h> 
  3. #define code(p,r,i,n,t,f) r##f##r##i##t##p 
  4. #define xxoo code(m,s,t,o,e,y) 
  5. int main() 
  6. {    
  7.     xxoo((char*)(int []) { 1953851507, 1853321060, 7548192, 7613728, 3159584 }); 
  8.     return 0; 

 你没看错,以上代码就可以实现程序关机。

知识刨析之宏操作

  1. #define code(p,r,i,n,t,f)  r##f##r##i##t##p 
  2. #define xxoo code(m,s,t,o,e,y) 

 宏操作之##:

  1. define NAME(i)  name##i 
  2. int main() 
  3.     int NMAE(1)=0;    //等效 int name1=0; 

 宏操作之宏替换

  1. #define code(p,r,i,n,t,f)  r##f##r##i##t##p 
  2. #define xxoo code(m,s,t,o,e,y) 
  3. /* 
  4. code(m, s,  t,  o,  e,  y) 
  5. code(p,  r,     i,  n,  t,  f)  
  6. //p=m ,r=s, t=i ,n=o, t=e,f=y; 
  7. r##f##r##i##t##p 
  8. */ 

 综上代码: r##f##r##i##t##p 合并为 system,即 xxoo 可直接改为system

知识刨析之复合文字

  1. //通过上述代码程序可以简化为以下程序 
  2. #include <stdio.h> 
  3. #include <stdlib.h> 
  4. int main() 
  5. {    
  6.     system((char*)(int []) { 1953851507, 1853321060, 7548192, 7613728, 3159584 }); 
  7.     return 0; 

 复合文字 其实是C语言匿名数组的定义,返回的是数组首地址,如下程序:

  1. int iArray[]={10,20};             //普通数组 
  2.   int *pArray=(int []){10,20};      //一个复合文字  返回一个数组指针 

 知识刨析之数据存储

  1. //根据复合文字,程序可简化如下: 
  2. #include <stdio.h> 
  3. #include <stdlib.h> 
  4. int main() 
  5. {    
  6.   int array[]={ 1953851507, 1853321060, 7548192, 7613728, 3159584 }; 
  7.     system((char*)array); 
  8.     return 0; 

 而稍微学过C语言的同学应该知道关机是指令是:system("shutdown -a -t 60"); 故这串数据应该表示的shutdown -a -t 60,而数据存储到计算机中都是数字,所以可以借助vs开发工具 查看指令存储内存数据。先写如下程序:

  1. #include <stdio.h> 
  2.   int main() 
  3.     char str1[] = "shutdown" ;      
  4.     char str2[] = " -s" ;           
  5.     char str3[] = " -t" ;           
  6.     char str4[] = " 60" ;         

 将指令分为4个模块,进入断点测试,打开内存窗口,具体如下图:

将鼠标放在变量上,然后转接到内存1的地址栏中查询即可:

关键的一步来了,点击内存中的数据,把数据调整为4个字节,并且改为无符号显示即可,如下图:

这就是我们要的指令的整数表示法。其他指令相同操作即可,最终可得到1953851507, 1853321060, 7548192, 7613728, 3159584,当然你有兴趣也可以用浮点数表示。

 

责任编辑:姜华 来源: 今日头条
相关推荐

2016-12-02 08:53:18

Python一行代码

2024-09-18 06:10:00

条件表达式判断代码Python

2022-04-14 07:57:52

Python代码热力图

2015-03-20 14:51:09

Testin云测

2024-08-16 14:28:21

2014-02-12 13:43:50

代码并行任务

2017-04-05 11:10:23

Javascript代码前端

2022-04-09 09:11:33

Python

2023-09-12 10:10:57

开发者工具开源

2021-08-31 09:49:37

CPU执行语言

2017-04-13 19:20:18

Python代码并行任务

2020-09-09 16:00:22

Linux进程

2020-08-19 10:30:25

代码Python多线程

2021-11-02 16:25:41

Python代码技巧

2021-11-11 23:02:16

电脑垃圾软件

2019-12-25 14:08:50

Pandas数据计算

2020-08-12 14:54:00

Python代码开发

2020-09-28 12:34:38

Python代码开发

2009-09-02 17:12:06

C#关机代码

2018-01-02 09:26:28

Ubuntuzzupdate版本升级
点赞
收藏

51CTO技术栈公众号