- 博客(21)
- 收藏
- 关注
原创 JSON读写
JSON读写dumps方法dumps方法主要是将pyhon中中的数据转换为json形式 data=json.dumps(data)loads方法loads方法主要是将json转换为python中的数据对象 data=json.loads(data)...
2019-01-28 11:17:01 223
转载 fork()函数的小技巧
#include <sys/types.h>#include <sys/wait.h>#include <unistd.h>#include <stdlib.h>int main(){ printf("fork\n"); //printf("fork"); int a; int pid; pid=fork(); if(pid) {
2017-08-22 20:04:06 248
原创 宏定义中 “#”的用法
#include<stdio.h>#define PRIN(format,data) printf("data=%"#format"\n",data)int main(){ int a=1; char b='1'; char *c="1"; PRIN(d,a); PRIN(d,b); PRIN(s,c); return 0;}使用宏定义输出不同的数据。XXXX 会在预编译时 加入“ ”中。
2017-08-02 17:13:17 223
原创 deifne小技巧
#define STRCMP(a,R,b) (strcmp(a,b) R 0)If(STRCMP(s,==,”STRING”)) …………..
2017-06-08 19:56:08 306
原创 typedef 与 define的区别
typedef与define有两个关键性的区别,这会带给我们一些烦恼。但其根本区别就是typedef是个“封装”好的类型,就是在声明类型之后不能再往里面添加其他声明。区别如下:1)添加其他#define example int则: unsigned example a; 完全没有问题 typedef example int 但会报错2)连续声明#define pstr int*
2017-06-08 19:52:09 296
原创 C语言声明解读步骤
第一步: 找到变量标识符, 第二步: 查看标识符右边的符号:若为方括号 则表示“…的数组”。 第三步: 若为左括号:表示“返回….的函数” 第四步: 如果左边的符号是一个左括号:则应将之前已经处理过的声明结合,重复步骤二。 第五步: 如果左边的符号是const/*则表示“只读”/“指向…的指针”。 重复步骤四。 第六步: 将剩下的符作组合。
2017-06-07 22:56:15 295
原创 C语言声明解读步骤
第一步: 找到变量标识符, 第二步: 查看标识符右边的符号:若为方括号 则表示“…的数组”。 第三步: 若为左括号:表示“返回….的函数” 第四步: 如果左边的符号是一个左括号:则应将之前已经处理过的声明结合,重复步骤二。 第五步: 如果左边的符号是const/*则表示“只读”/“指向…的指针”。 重复步骤四。 第六步: 将剩下的符作组合。
2017-06-06 21:56:55 242
转载 字符输出小技巧
void fun(char *string){ static char str=' '; printf("%c %s",str,string); str=',';}
2017-06-06 20:18:20 189
原创 结构体内存分配
typedef struct{ int len; char namestr[1];}S;假如我们声明了这样一个结构体,在64位(32位)下,我们打印他的长度,会发现 这是因为编译器会自动分配一定空间用于对齐,因此会有无名空间。
2017-06-05 21:34:36 287
原创 转换十六进制小技巧
最近在看深入计算机系统,看到一个小技巧,顺手写一下。当X是2的非负整数n次幂时,也就是说x=2^n时,当n=i+4*j时,其中0=<i<=3时,我们可以将x写成开头的十六进制为1/4/8,后面加入j个0。 譬如,当x=2048时,即n=3+4*2,则为0x800。
2017-02-21 16:47:35 1861
原创 汇编中栈的定义
汇编中栈的定义: STACK SEGMENT A DW 1,2,3,4,5 STACK ENDS CODE SEGMENT ASSUME CS:CODESTART: MOV AX,STACK MOV SS,AX MOV SP,0AHEND1: MOV AX,4C00H INT 21HCODE ENDSEND START
2017-01-16 18:42:30 3680
原创 查表指令:XLAT
汇编语言中的查表指令(XLAT)使用相对较多,现在,稍微介绍一下它。 所谓查表,就是查找表中元素,具体实现如下。 首先,将数组偏移地址给BX,再将在该数组中元素的下标值给AL,使用XLAT指令,即可获得该元素,该元素放置在AL中。 下面是例子: LEA BX,A MOV AL,00H XALT下面是使用查表输出HELLO WORLD: DATA SEGMENT A DB 'HE
2017-01-14 11:20:05 8585
原创 C 的一点心得
嗯,学期末了,这个学期中吧,算是开了一个博客打算水水,结果,还真是水水。 恩,大二了,学的东西也多了,结果感觉啥也没学到。 作为第一种入门的语言,是C,一种挺经典的语言。老师也说过,或许PYTHON更加适合新手入门。但是,个人感觉,C语言的魅力好像更大一些, 他给我们一个空间,这个空间是不受太多约束的空间,因而,我们可以在其中充分的发挥我们的想象力。 下个学期要学面向对象的
2016-12-18 11:34:24 288 2
原创 一级指针与二级指针
指针 在C语言中,可以使用指针对变量进行操作。 一个有意思的比喻是,把变量比作一个盒子,而把指针比作一个抽屉, 那么,一个不太恰当的例子是,当你想要盒子里的东西的时候,你可以直接找到盒子,当然,也可以先拉出抽屉来,而盒子,自然在抽屉里。 下面,则是正经的干货。 int n=3; int *p=&n; 那么,他们则有如下的关系: 首先,系统会分配内存给n,假如它的地
2016-11-20 17:53:40 369
原创 十进制转二进制输出
data segment x dw 222 data ends code segment assume cs:code,ds:data start: mov ax,data mov ds,ax lea si,x mov cx,16 mov bx,[si] one: rol bx,1 mov al,bl and al,1 add al,30h mo
2016-11-14 21:07:22 423 1
原创 汇编输出十进制数
DATA SEGMENTX DB 122DATA ENDSSSEG SEGMENT STACK DW 10 DUP(?)SSEG ENDSCODE SEGMENT ASSUME CS:CODE,DS:DATA,SS:SSEGSTART: MOV AX,DATA MOV DS,AX MOV DL,X MOV CX,1 MOV BL,10ONE: MOV AH,0 MOV A
2016-11-13 20:51:02 11827 3
原创 new与delete
C++中的动态分配 在C中,我们使用malloc与free进行动态分配内存空间与释放,而在C++中,则使用new与delete进行相关操作。首先,我们来看一下他们的使用方法。 对于数组来说,定义方法为: int *p=new int[10]; delete p;而对于单个指针来说: int *p=new int; delete p;当然,int也可以替换为类对象。如: C *p=new
2016-11-13 20:49:19 233
原创 条件编译 #if #endif #ifdef等
最近在看C++项目,发现项目里添加了好多#if等符号,查了一下,发现,他们作用不小。 所谓的#if等符号,包含#if,#elif,#ifdef,,#else,#ifndef,#endif,,总称条件编译。首先,所谓的条件编译,是指在我们书写代代码完成之后,编译之前的预编译阶段发挥作用。大体就是决定是否编译。 举个例子,如果决=决定写入,就会在对应的EXE文件中包含此代码段,否则,不会包含。值
2016-10-29 19:40:41 893
原创 第一篇博客
说来惭愧,学习了一年代码,才堪堪侃侃门外汉,大二了,才开了自己的第一篇博客,算是一个开始吧。 以前是朦胧,现在总算是看到了一丝曙光。 从今天始,打算把自己学到的东西整理下来,写在这儿,也算是一种积累吧。 学过之后,才知道大神是多么厉害,好多我们现在看不懂的,甚至想都没想到的东西,他们早就研究出来了,甚至提前了几个世纪。 前人珠玉在前,我们怎敢不奋起直追。 我希望,终究有一日,我
2016-10-26 21:07:03 278
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人