- 博客(6)
- 资源 (1)
- 收藏
- 关注
原创 C语言高级编程:利用堆栈溢出修改函数返回地址
利用函数堆栈溢出,修改函数返回地址,进而调用别的函数。测试环境:win10 x86-64gcc: x86_64-pc-cygwin代码#include <stdio.h>#include <stdlib.h>#include <string.h>int len;typedef void ( * p_fun)(vo...
2019-08-09 20:52:33 3464 5
原创 C语言高级编程:大端模式和小端模式(Big-Endian和Little-Endian)
大端模式(Big_endian):字数据的高字节存储在低地址中,而字数据的低字节则存放在高地址中。小端模式(Little_endian):字数据的高字节存储在高地址中,而字数据的低字节则存放在低地址中。测试平台:64位X86Ubuntu代码:#include<stdio.h>int is_little_endian(){ union ch...
2019-08-03 17:00:59 2621 3
原创 C语言高级编程:深入理解const
const修饰的变量,其实质是告诉程序员或编译器该变量为只读,如果程序员在程序中显示的修改一个只读变量,编译器会毫不留情的给出一个error。而对于像数组溢出,隐式修改等程序不规范书写造成的运行过程中的修改,编译器是无能为力的,也说明const修饰的变量仍然是具备变量属性的。测试平台:64位X86Ubuntu代码1:#include<stdio.h>vo...
2019-08-03 16:57:16 3487 8
原创 linux C bool变量
Linuxbool变量:1)是小写bool而非大写BOOL2)值为true或者false,而非大写TRUE和FALSE,大写的需要自己采用宏来定义3)linuxC下需要包含头文件stdbool.h4)Linux下false = 0,true = 1,且一个bool型变量占用一个字节内存空间5)BOOL是微软VC++独有的,TRUE和FALSE在VC++中也有定义,但是标准C...
2019-08-03 16:54:16 4709
原创 负数在计算机怎样表示与存储
负数在计算机中以补码的形式存储。在计算机系统中,数值一律用补码来表示。正数的补码:就是其本身负数的补码:是在其原码的基础上, 符号位不变, 其余各位取反, 最后+1. (即在反码的基础上+1)[+1] = [00000001]原= [00000001]反= [00000001]补[-1] = [10000001]原= [11111110]反= [11111111]补...
2019-08-03 16:48:56 3048
原创 C语言高级编程:数组名赋值给指针变量的用法解析
代码:#include<stdio.h>typedef struct test{ int a; int b; int c;} TEST;TEST arr[]={ {1,2,3}, {4,5,6}, {7,8,9}};void main(void){ TEST *tmp; tmp = arr; ...
2019-08-03 16:44:17 14953 2
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人