随笔分类 - 初学c/c++
摘要:typedef 是一个高级数据特性,它可以为某一类型自定义名称, 即类型的别名。 #include <stdio.h> typedef char* STRING; //有分号,宏#define STRING char* 没有分号 typedef enum gender { MAN, WOMAN }g
阅读全文
摘要:一 枚举(enum)变量的定义 //1.先定义枚举类型,再定义枚举变量 enum _season { spring, summer, autumn, winter }; enum _season s; //2.定义枚举类型的同时定义枚举变量 enum _season { spring, summer
阅读全文
摘要:一 结构体定义 struct 结构名 { 成员类型 成员名; 成员类型 成员名; }; // 注意这里要有分号 //例: struct student { char name[16]; int age; char tel[12]; }; 二 结构体初始化 #include <iostream> us
阅读全文
摘要:一 为什么使用宏 提高代码的可读性和可维护性 避免函数调用,提高程序效率 二 什么是宏 它是一种预处理器指令,在预编译阶段将宏名替换为后面的替换体 三 宏的定义和使用 //多行可用 \ 延续 //1.不带参宏 #define ADDRESS "广东省深圳市\ 宝安区" //2.带参宏 #define
阅读全文
摘要:一 VisualC++ debugger 和 CRT 库 第一步: 包含以下头文件 #define _CRTDBG_MAP_ALLOC #include <stdlib.h> #include <crtdbg.h> 第二步: 接管 new 操作符 #ifdef _DEBUG #ifndef DBG_
阅读全文
摘要:一 申请的内存多次释放 #include <iostream> using namespace std; int main() { int* p = new int[5]; *(p+0) = 0; cout << *(p + 0) << endl; delete[] p; //... 此处省略n行代
阅读全文
摘要:函数返回值使用指针时可以返回函数内部的动态分配内存地址,局部静态变量地址,以及全局静态变量和外部变量地址 一 返回函数内部动态内存分配地址 #include <iostream> using namespace std; int* add(int x, int y) { int* p = new i
阅读全文
摘要:数据类型有:int float等 存储类型有:自动变量(auto)、静态变量 (static)、外部变量(extern)以及寄存器变量(register) auto: 函数中所有的非静态局部变量。 register: 一般经常被使用的的变量(如某一变量需要计算几千次)可以设 置成寄存器变量,regi
阅读全文
摘要:一 malloc 和 free 函数 // 分配基础类型 int *p3 = (int *)malloc(sizeof(int)); free p3; // 分配数组变量 int *p1 = (int *)malloc(sizeof(int) * 10); *(p1 + 9) = 5; free(p
阅读全文
摘要:一 通过返回动态内存的指针 #include <iostream> using namespace std; int* test(int count) { int* p = (int*)malloc(sizeof(int) * count); if (p) { *(p + 0) = 5; } ret
阅读全文
摘要:|代码区| | | |常量区| |全局数据区| |堆区| |栈区| 1、栈区(stack):由编译器自动分配释放,存放函数的参数值,局部变量值等。 2、堆区(heap):一般由程序员分配释放,随叫随到,挥之即走。 3、全局/静态区(static):全局变量和静态变量的存储是放在一起的,在程序编译时分
阅读全文
摘要:一 引用的定义 引用可以看作一个已定义变量的别名 引用的语法:Type& name = var; // 引用的定义 int a = 10; int& b = a; cout << "a:" << a << " a的地址: " << &a << endl; cout << "b:" << b << "
阅读全文
摘要:深入理解 C++ String 在内存中的布局: | 名称 |x86字节数 | x64字节数 | | | | | | 分配器 Allocator |4 |8 | | 原始字符传 Data 位置 | 15+1 最多包含15个字符加一个结束符‘\0’ | 15+1 最多包含15个字符加一个结束符‘\0’
阅读全文
摘要:一 为什么使用指针 函数的值传递,无法通过调用函数,来修改函数的实参 被调用函数需要提供更多的“返回值”给调用函数 减少值传递时带来的额外开销,提高代码执行效率 二 指针的定义与读写 // 指针的定义 int age = 0; int *p = NULL; // p是一个指针,p的值就是一个整数的地
阅读全文
摘要:#include <iostream> #include <time.h> #include <Windows.h> int main() { time_t start; time_t end; time(&start); // 1970 年 1 月 1 日 0 时 0 分 0 秒 至今的秒数 fo
阅读全文
摘要:一 对输入进行体检 1 检查输入源(如:文件,网络、控制台等)数据的合法性 2 检查每一个函数输入参数的合法性 处理方式:一旦非法输入被发现,那么应该根据情况进行处理。防御式编程的最佳的形式是在一开始就不引入错误 二 对非预期错误使用断言 1 空指针 2 输入或者输出参数的值不在预期范围内 3 数组
阅读全文
摘要:头文件:<conio.h> 在输入密码时可以用getch()函数来达到不显示密码的效果 int main() { char pwd[64] = { 0 }; int index = 0; cout << "请输入密码:"; while (1) { char c = _getch(); if (c =
阅读全文
摘要:在C语言中没有string类型,可以通过string类对象的成员函数c_str()把string对象转换成C中的字符串样式。 int main() { string str = "zhangsan"; char cstr[64] = { 0 }; strcpy(cstr, str.c_str());
阅读全文
摘要:一 生成lib文件 使用vs2019创建工程的时候选择静态库 这里我们做一个简单加减乘除的库文件 // TestLib1.h #pragma once #ifndef _TESTLIB_H_ #define _TESTLIB_H_ int testAdd(int a, int b); int tes
阅读全文
摘要:用system()函数调整控制台大小 #define _CRT_SECURE_NO_WARNINGS #include <stdio.h> #include <Windows.h> #define WIDTH 40 #define HEIGHT 15 int main() { char cmd[12
阅读全文