程序基础
鱼7s later 재생
这个作者很懒,什么都没留下…
展开
-
c++ string常用函数
头文件#include <string>函数operator[]:string str="abc"cout << str[1] << endl;operator<string str="abc"string str1="def"cout << (str < str1) << endl;operator>string str="abc"string str1="def"cout << (s原创 2021-02-28 23:23:11 · 109 阅读 · 0 评论 -
nth_element函数
头文件#include <algorithm>函数声明template <class RandomAccessIterator, class Compare>void nth_element (RandomAccessIterator first, //首迭代器 RandomAccessIterator nth, //待寻找元素的迭代器 RandomAccessIterator last, //尾迭代器原创 2021-02-28 22:40:30 · 100 阅读 · 0 评论 -
c语言变参函数与变参宏
变参函数#include <stdio.h>#include <stdarg.h>int max(int n,...){ int ans=0x80000000; va_list arg; //定义va_list 类型变量arg va_start(arg,n); //宏函数va_start while(n--){ int temp=va_arg(arg,int); //宏函数va_arg if(temp > an原创 2020-11-10 23:08:18 · 247 阅读 · 0 评论 -
c语言字符串与整形,浮点数...相互转换
在c语言中我们常用sprintf来进行字符串的拼接,但其实sscanf,sprintf两个函数能够实现字符串与其他类型的转换字符串转整形#include <string.h>#include <stdio.h>int main(){ char str[]="123 838"; int a,b; sscanf(str,"%d %d",&a,&b); return 0;}字符串转浮点型#include <string.h>#in原创 2020-11-10 17:36:16 · 323 阅读 · 0 评论 -
不同类型指针强制转换可能存在的问题
一个问题char a[20]="You_are_a_girl";int *ptr=(int *)a;ptr+=5;最终*ptr的值应该是多少?输出验证开始以为是索引为5的字母的ASCII码,但实际上机验证后发现出入很大,输出了32767这个奇怪的数字深入探索经过排查发现问题应该是出在int *ptr=(int *)a; 这里,将char类型的指针强制转换为int类型指针,在执行ptr+=5; 时,并不是加上sizeof(char)5个字节,而是sizeof(int)5个字节,于是最终p原创 2020-09-04 13:27:42 · 765 阅读 · 0 评论 -
为什么结构体所占内存大于所有成员之和
首先由几个反常现象说起第一个反常现象:typedef struct{ int a; double b; char c;} Test;Test 结构体的所占内存大小应该为int 的4字节+double 的8字节+char 的1字节=13字节,但反常的地方就是Test所占用的内存并不是13字节,而是24字节,整整翻了接近一倍printf("%lu\n",Test);第二个反常现象:typedef struct{ int a; char c; double b;} Test;原创 2020-09-04 12:45:41 · 1052 阅读 · 1 评论 -
c语言实现一个计算器
流程图(函数有点多)核心算法:先上代码为敬,之后详细拆分每个函数#include <stdio.h>#include <stdlib.h>void calculator_run(); //管理运行,输入,计算相关int input_and_legal(char []); //输入并验证字符合法int legal(char); //验证字符合法void compute_and_output(char []); //相关处理,输出结果double原创 2020-08-21 21:00:25 · 2197 阅读 · 1 评论 -
自定义sort()函数
c++ Primer p344sort()函数默认的string排序:int main() { vector<string> test{ "aalal","dfjd","djdr","hkhkikhoooo","vj","khk","eire","gkgdkjdje" }; sort(test.begin(), test.end()); for (auto& t : test) { cout << t << ends;原创 2020-08-17 10:01:32 · 861 阅读 · 0 评论 -
简单实现一个栈
用单向动态链表实现栈代码先行,说明随后就到template<class Type> //定义模板类class Stack{private: Type data; Stack* next; //指向下一个节点的指针 static Stack* head; //指向表头的指针public: Stack() :next(NULL) {} ~Stack() { delete next; } void push(Type);原创 2020-08-15 12:26:18 · 380 阅读 · 0 评论 -
程序的text,data,bss,stack,heap
全局变量:text 代码段: 存放代码,一般只读data 数据段: 存放静态变量,全局初始化变量,常量,只初始化一次bss BSS段: 存放全局未初始化数据,用0初始化非全局变量:stack 栈区: 存放局部变量,函数参数,返回值等heap 堆区: 动态分配如malloc,new申请的内存详情...原创 2020-08-05 15:44:05 · 84 阅读 · 0 评论