system(“pause”)

system(“pause”)意思就是让程序暂停一下,然后按任意键继续,初学的时候最多见于程序的末尾处,用于看运行结果,避免程序一闪而过。相同的我们还可以用getchar(),避免程序运行完直接结束而看不到运行结果。

int main()
{
    system("pause");
    return 0;
}

srand和rand

在rand调用之前设置srand,若不设置当rand调用时随机数种子默认为1,随机数种子一样则每次打印出来的值也是一样的。

strcpy_s

dest_size的大小一定要大于等于src的长度+1

errno_t strcpy_s(char *dest, rsize_t dest_size, const char *src);

auto z = strcpy_s(dst2, strlen(src) + 1, src);

strcat_s

Appends a string

char buf[16];
strcpy_s(buf, 16, "Start");
strcat_s(buf, 16, " End");  

disable warning

#pragma warning(disable : 4996)

VA_LIST 可变参数

VA_LIST 是在C语言中解决变参问题的一组宏,变参问题是指参数的个数不定,可以是传入一个参数也可以是多个;可变参数中的每个参数的类型可以不同,也可以相同;可变参数的每个参数并没有实际的名称与之相对应,用起来是很灵活。VA_LIST的用法:

  • 首先在函数里定义一个 VA_LIST 型的变量 ,这个变量是指向参数的指针 ,通过指针运算来调整访问的对象; -然后用 VA_START 宏初始化变量刚定义的 VA_LIST 变量 ,实际上 就是用 VA_LIST 去指向函数的最后一个具名的参数;
  • 然后用 VA_ARG 宏返回可变的参数,VA_ARG 的第二个参数是你要返回的参数的类型(如果函数有多个可变参数的,依次调用 VA_ARG 获取各个参数);因为栈地址是从高到低延伸的,所以加上你要的参数类型大小,就意味着栈顶指针指向你所要的参数,便可通过 底层 pop 得到。
  • 最后用 VA_END 宏结束可变参数的获取,即清空 va_list 。

typeid 获取数据类型

cout << typeid("ABC").name() << endl;

memset & wmemset

以指定字符设置字符串

char str[300] = "EmbeddingPython";
memset(str, 'f', sizeof(str));