C/C++ Learning

c语言不常用宏(#、##、...、_ _VA_ARGS_ _)

宏假如希望在字符串中包含宏参数,ANSI C允许这样作,在类函数宏的替换部分,#符号用作一个预处理运算符,它可以把语言符号转化程字符串。例如,如果x是一个宏参量,那么#x可以把参数名转化成相应的字符串。该过程称为字符串化(stringizing).incldue <stdio.h>define PSQR(x) printf("the square of" #x "is %d.n"...阅读全文

判断CPU大小端

讲解:所谓大小端,从存储的角度看,低字节存在低地址位就是小端;反之低字节存放在地址的高位则为大端;程序中的一个int数据0x0010,如果CPU为小端则存储为0x0010,0x0010==256;如果为大端的话应该为0x0100;0x0010 == 00000000 00000000 0000001 00000000 高地址 低地址0x0...阅读全文

堆-Heap

堆:1、概念堆(二叉堆)可以视为一棵完全的二叉树,完全二叉树的一个“优秀”的性质是,除了最底层之外,每一层都是满的,这使得堆可以利用数组来表示(普通的一般的二叉树通常用链表作为基本容器表示),每一个结点对应数组中的一个元素。 如下图,是一个堆和数组的相互关系堆和数组的相互关系对于给定的某个结点的下标 i,可以很容易的计算出这个结点的父结点、孩子结点的下标:Parent(i) = floor(...阅读全文