C语言指针剖析

在使用c语言编程解决实际问题的时候,一般都会定义各种的变量,包括基本数据类型、指针、数组、结构体等,然后调用库函数处理数据,或是自己编写函数处理,最后程序结束。如果c程序不允许变量,那么你必须手动对内存进行操作,类似汇编语言,在c程序底层,一切的操作都是将内存中的数据拿到寄存器中,再把寄存器中的数据放到内存中,都是指针的操作。所以只要有指针,就完全可以替代各种变量,甚至函数操作。

汇编指令jmp的使用

汇编语言编程中,如果要实现类似高级语言中的分支和循环等,就必须要使用各种的转移指令,包含无条件转移指令(如jmp)、条件转移指令(如jcxz)、循环指令(如loop)、中断等。在8086CPU上,转移指令的本质是修改寄存器cs和ip的值,将其执行下一条要执行的指令,最基础的无条件跳转指令jmp,就是根据要跳转到的位置修改ip的值。

C语言不定参数的解决方法

C语言中,函数的参数个数和类型一般在声明函数时确定,但当声明函数时不能确定参数的个数和类型时,就需要使用“…”作为参数占位符,表示不定参数的内存地址。 解决不定参数的方法就是按照指定的类型读取栈中的不定参数,并且指定一个结束标志,每次输出前判断结束标志。

C语言中的静态局部变量

在C语言中,局部变量是存储在栈段中的,在进入函数后分配内存单元,在函数退出前释放占用的内存。如果在局部变量前加static就得到静态局部变量,静态局部变量存储在数据段中,在函数结束后仍然保存在内存中,再次调用函数时,继续调用之前的静态局部变量值。